1

ユーザーがJFrameを閉じたときに、JFrameの場所(bounds、extendedState)を保存したいと思います。しかし、ユーザーがフレームを2番目の画面に移動して最大化した場合、その情報をどのように保存できますか?私のナイーブな(そしてシングルディスプレイの)実装は次のようなものです:


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番目の画面に移動して、そこで最大化するにはどうすればよいですか?

4

1 に答える 1

3

使用されているグラフィックデバイスのIDを見つけるには:

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

逆に言えば、次のようなグラフィックデバイスを見つけることができます。

 GraphicsEnvironment.getLocalGraphicsEnvironment().getDevices()

その後、コンストラクターでデバイスの構成を使用できますJFrame。工事後に設置できるとは思いません。

もちろん、解像度が変わったので、たとえば画面からフレームを開かないように注意する必要があります。

于 2009-05-01T08:00:17.180 に答える