1
我想在用戶關閉它時存儲JFrame的位置(bounds,extendedState)。但是,當用戶將框架移動到第二個屏幕並將其最大化時,如何存儲該信息?我的天真(和單一顯示)實現是這樣的:在多顯示器環境中保存JFrame位置
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);
}
}
我怎麼能發現幀在哪個屏幕上? 如何將框架移動到第二個屏幕並使其最大化?
我想getIDString()不是那麼一般。它可能不會在不同的機器/平臺上返回相同的值。也許,我應該在GraphicsEnvironment.getLocalGraphicsEnvironment()。getDevices()數組中獲取frame.getGraphicsConfiguration()。getDevice()對象的索引嗎?數組的順序是否與顯示的邏輯索引相似? – akarnokd 2009-05-01 08:58:37