我想弄清楚如何在打开另一个阶段时退出javafx中的primaryStage 单击按钮后,删除主要阶段的代码是什么?
答案 0 :(得分:1)
您可以使用
/dev
或
primaryStage.close();
根据documentation,这些完全相同。可以认为,由于primaryStage.hide();
是在超类中定义的,因此它更为通用,因此略有优选。例如,如果您没有直接引用hide()
,而是显示在其中的某个节点,则可以执行
primaryStage
但是使用someNode.getScene().getWindow().hide();
这种方式需要强制转换。
一个"陷阱":默认情况下,当显示的最后一个窗口关闭时,应用程序将退出。所以,如果你这样做
close()
可能会发生不好的事情,因为您可能会在显示新阶段之前隐式退出应用程序(!)。您可以使用
更改此处的默认行为primaryStage.close();
Stage newStage = new Stage();
Scene newScene = new Scene(...);
newStage.setScene(newScene);
newStage.show();
或者,当然要重新排序代码,以便在关闭现有代码之前打开新阶段。
答案 1 :(得分:0)
删除舞台的代码是:
stage.close();
对应于您要退出的舞台的变量阶段
答案 2 :(得分:0)
在按钮上设置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();
的ActionEvent
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();
}