Ich möchte den JFrame-Speicherort (bounds, extendedState) speichern, wenn der Benutzer ihn schließt. Wenn der Benutzer den Rahmen auf den zweiten Bildschirm bewegt und ihn maximiert, wie kann ich diese Informationen speichern? Meine naive (und einzelne Anzeige) Implementierung ist wie folgt:JFrame-Speicherort in Multi-Display-Umgebung speichern
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 feststellen, auf welchem Bildschirm der Rahmen befindet? Wie kann ich einen Rahmen auf den zweiten Bildschirm verschieben und dort maximieren?
Ich denke, die getIDString() ist nicht so allgemein. Es kann nicht denselben Wert auf verschiedenen Maschinen/Plattformen ausgeben. Vielleicht, sollte ich stattdessen den Index frame.getGraphicsConfiguration(). GetDevice() -Objekt im GraphicsEnvironment.getLocalGraphicsEnvironment(). GetDevices() -Array? Entspricht die Reihenfolge des Arrays dem logischen Index des Displays? – akarnokd
und wie male ich es in einem solchen Gerät neu? – Oso