【问题标题】:How to Exit primaryStage while opening a new stage in javafx如何在 javafx 中打开新阶段时退出 primaryStage
【发布时间】:2017-03-09 00:40:39
【问题描述】:

我想弄清楚如何在打开另一个阶段的同时退出 javafx 中的 primaryStage 单击按钮后,删除初级阶段的代码是什么?

【问题讨论】:

    标签: java button javafx exit stage


    【解决方案1】:

    你可以使用任何一个

    primaryStage.close();
    

    primaryStage.hide();
    

    根据documentation,这些是完全等价的。可以说,由于hide() 是在超类中定义的,所以它更通用,因此更受欢迎。例如,如果您没有直接引用primaryStage,而是引用其中显示的某个节点,则可以这样做

    someNode.getScene().getWindow().hide();
    

    但是以这种方式使用close() 需要强制转换。

    一个“陷阱”:默认情况下,当最后显示的窗口关闭时,应用程序将退出。所以如果你这样做了

    primaryStage.close();
    Stage newStage = new Stage();
    Scene newScene = new Scene(...);
    newStage.setScene(newScene);
    newStage.show();
    

    可能会发生不好的事情,因为您可以在显示新阶段之前隐式退出应用程序(!)。您可以在此处更改默认行为

    Platform.setImplicitExit(false);
    

    或者,当然是重新排序代码,以便在关闭现有阶段之前打开新阶段。

    【讨论】:

      【解决方案2】:

      删除阶段的代码是:

      stage.close();
      

      与您要退出的阶段相对应的可变阶段

      【讨论】:

      • 只需使用 stage.close 或者你可以做的只是在同一个舞台上改变场景。
      • 使用 stage.close();
      【解决方案3】:

      在你的按钮上设置 fx:id

      <JFXButton fx:id="btn_login" prefHeight="41.0" prefWidth="242.0" style="-fx-background-color: #0098DA;" text="Login" textFill="WHITE" GridPane.columnIndex="1" GridPane.rowIndex="4">
      

      在你的 java 控制器中

      Stage stage = (Stage) btn_login.getScene().getWindow();
      

      动作事件

      private void act_login(ActionEvent event) { //login pressed
          stage.close();
          Stage primaryStage = new Stage();
          Parent root = null;
          try {
              root = FXMLLoader.load(getClass().getResource("../fxmlFile/main.fxml"));
          } catch (IOException e) {
              e.printStackTrace();
          }
          primaryStage.setTitle("Main Aplikasi Keuangan");
          primaryStage.setScene(new Scene(root, 600, 400));
          primaryStage.show();
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 2020-01-18
        • 1970-01-01
        • 2014-08-20
        相关资源
        最近更新 更多