Frage

Ich möchte einen Ort ein (Grenzen, extendedState) des JFrame speichern, wenn der Benutzer es schließt. Wenn jedoch der Benutzer den Rahmen auf den zweiten Bildschirm bewegt und maximiert es, wie kann ich speichern diese Informationen? Meine naive (und einzige Anzeige) Implementierung ist wie folgt:


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);
    }
}

Wie kann ich auf dem Bildschirm entdecken der Rahmen ist? Wie kann ich einen Rahmen an den zweiten Bildschirm bewegen und dort maximieren?

War es hilfreich?

Lösung

Um die ID des verwendeten Grafikgerätes zu finden:

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

in die andere Richtung, können Sie die Grafik Geräte mit finden:

 GraphicsEnvironment.getLocalGraphicsEnvironment().getDevices()

Sie können dann eine Konfiguration aus dem Gerät im JFrame Konstruktor verwenden. Ich glaube nicht, dass Sie es nach dem Bau festlegen können.

Natürlich sollten Sie vorsichtig sein, nicht zu, sagen wir, den Rahmen weg vom Schirm öffnen, da die Auflösung ändern hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top