1
ユーザーが閉じると、JFrameの場所(bounds、extendedState)を保存します。ただし、ユーザーがフレームを2番目の画面に移動して最大化すると、その情報をどのように保存できますか?私の素朴な(そしてシングルディスプレイ)実装は次のようなものです:マルチディスプレイ環境での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);
}
}
フレームがどの画面にあるかをどのようにして発見できますか? フレームを2番目の画面に移動して最大化するにはどうすればよいですか?
getIDString()は一般的ではないと思います。異なるマシン/プラットフォームで同じ値を返さないことがあります。 GraphicsEnvironment.getLocalGraphicsEnvironment()。getDevices()配列のframe.getGraphicsConfiguration()。getDevice()オブジェクトのインデックスを取得する必要がありますか?アレイの順序はディスプレイの論理インデックスに似ていますか? – akarnokd
とそのようなデバイスで再ペイントする方法はありますか? – Oso