Question

Je veux stocker l'emplacement d'un JFrame (bounds, extendedState) lorsque l'utilisateur le ferme. Cependant, lorsque l'utilisateur déplace le cadre sur le deuxième écran et le maximise, comment puis-je stocker ces informations? Mon implémentation naïve (et affichage unique) est la suivante:


void saveFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.setProperty("State", String.valueOf(frame.getExtendedState()));
    props.setProperty("X", String.valueOf(frame.getX()));
    props.setProperty("Y", String.valueOf(frame.getY()));
    props.setProperty("W", String.valueOf(frame.getWidth()));
    props.setProperty("H", String.valueOf(frame.getHeight()));
    props.storeToXML(new FileOutputStream("config.xml"), null);
}
void loadFrame(JFrame frame) throws IOException {
    Properties props = new Properties();
    props.loadFromXML(new FileInputStream("config.xml"));
    int extendedState = Integer.parseInt(props.getProperty("State", String.valueOf(frame.getExtendedState())));
    if (extendedState != JFrame.MAXIMIZED_BOTH) {
        frame.setBounds(
            Integer.parseInt(props.getProperty("X", String.valueOf(frame.getX()))),
            Integer.parseInt(props.getProperty("Y", String.valueOf(frame.getY()))),
            Integer.parseInt(props.getProperty("W", String.valueOf(frame.getWidth()))),
            Integer.parseInt(props.getProperty("H", String.valueOf(frame.getHeight())))
        );
    } else {
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
    }
}

Comment savoir sur quel écran se trouve le cadre? Comment puis-je déplacer un cadre vers le deuxième écran et l’agrandir?

Était-ce utile?

La solution

Pour trouver l'ID du périphérique graphique utilisé:

frame.getGraphicsConfiguration().getDevice().getIDString()

Inversement, vous pouvez trouver les périphériques graphiques avec:

 GraphicsEnvironment.getLocalGraphicsEnvironment().getDevices()

Vous pouvez ensuite utiliser une configuration du périphérique dans le constructeur JFrame . Je ne crois pas que vous puissiez le définir après la construction.

Bien sûr, vous devez faire attention à ne pas, par exemple, ouvrir le cadre hors écran car la résolution a changé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top