2

ユーザーがを移動して閉じたStageときに、画面上のの最後の位置を保持したいと思います。StageSwingで、ウィンドウの同じインスタンスを保持すると、移動、閉じ、再度開いた後、同じ場所に表示されます。StageJavaFXで常に同じ場所に表示されるのはなぜですか?

以下の私のコードサンプルを確認してください。

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);
    }

}

このコードをテストする場合は、ダイアログを開いて移動してから、閉じてから再度開きます。ダイアログを再度開くと、ダイアログが同じ状態になっていることがわかります。

4

2 に答える 2

1

SWINGの実装では、表示できないことを示すウィンドウを破棄しています。JDialogを再表示すると、SwingAPIはJDialogを破棄されたときと同じ状態で作成します。ドキュメントをチェックしてください

JavaFXの場合、hide()メソッドでウィンドウを非表示にするかclose()メソッドでウィンドウを閉じるかにかかわらず、ステージの状態を再現することはできません(もちろん手動でプログラムしない限り)。ディスカッションをチェックしてください 残念ながら、これがAPIの作成方法です。

于 2013-01-06T15:01:38.013 に答える
0

質問を完全に理解することができません。スイングで同じ場所にウィンドウをどのように表示するかについて、もう少し正確に教えてください。

私が理解しているように、ウィンドウを閉じた後にウィンドウが同じ場所に表示される唯一の方法は、ウィンドウを非表示にする(終了しない)というJFrameのデフォルトの動作を使用する場合です。一方、JavaFX Scene の場合は、新しいウィンドウを最初から開くような新しいリソースをロードしています。

Swing を JavaFX と統合できることにも注意してください。詳細については、ここをクリックしてください

于 2013-01-05T21:28:33.497 に答える