ユーザーがを移動して閉じたStage
ときに、画面上のの最後の位置を保持したいと思います。Stage
Swingで、ウィンドウの同じインスタンスを保持すると、移動、閉じ、再度開いた後、同じ場所に表示されます。Stage
JavaFXで常に同じ場所に表示されるのはなぜですか?
以下の私のコードサンプルを確認してください。
aboutStage = new Stage();
aboutStage.setTitle("About " + Constants.APP_TITLE);
aboutStage.setResizable(false);
aboutStage.initModality(Modality.APPLICATION_MODAL);
aboutStage.initOwner(primaryStage);
aboutStage.initStyle(StageStyle.UTILITY);
Parent page = (Parent) FXMLLoader.load(
AboutWindowController.class.getResource("about.fxml"));
Scene scene = new Scene(page);
aboutStage.setScene(scene);
miAbout.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent t) {
Stage about = mainClass.getAboutStage();
about.show();
}
});
Swingコードの例:
public class SwingTest {
public static void main(String[] args) {
JFrame f = new JFrame();
JButton b = new JButton("Show Dialog");
final JDialog d = new JDialog(f);
d.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
d.setSize(300, 300);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
d.setVisible(true);
}
});
JPanel p = new JPanel();
p.add(b);
f.add(p);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
このコードをテストする場合は、ダイアログを開いて移動してから、閉じてから再度開きます。ダイアログを再度開くと、ダイアログが同じ状態になっていることがわかります。