button - 如何关闭一个阶段并打开另一个阶段?
问题描述
我有一个充满内容的舞台。现在我想关闭/隐藏那个阶段。我读到 close / hide 是等效的,所以我不知道该使用哪个。关闭阶段后,我将开设一个新课程并制作一个新阶段,如果有一种简单的方法可以将旧阶段发送到新课程并切换内容,我也可以使用该解决方案。
我认为“primaryStage”隐藏在“start”中,无法从“handle”到达,这就是导致问题的原因,但我不知道解决方案。
public class Main extends Application implements EventHandler<ActionEvent> {
Button btn1, btn2;
public static void main(String[] args) {
launch(args);
}
public void start(Stage primaryStage) throws Exception {
primaryStage.setTitle("title");
btn1 = new Button("new");
btn2 = new Button ("continue");
btn1.setOnAction(this);
btn2.setOnAction(this);
VBox vb = new VBox (btn1, btn2);
vb.setSpacing(10);
vb.setPadding(new Insets(20));
BorderPane root = new BorderPane();
root.setBottom(vb);
Scene scene = new Scene (root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
@Override
public void handle(ActionEvent event) {
if (event.getSource()==btn1) {
// primaryStage.hide();
NewClassWithStage newStage = new NewClassWithStage();
}else if (event.getSource()==btn2) {
// primaryStage.close();
NewClassWithStage newStage = new NewClassWithStage();
}
}
}
解决方案
所以我不会implements EventHandler<ActionEvent>
让一切变得更复杂你应该尝试这样的事情看看你如何仍然可以控制primaryStage
如果你在开始功能仍然
public class Main extends Application {
Button btn1, btn2;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("title");
btn1 = new Button("new");
btn2 = new Button ("continue");
btn1.setOnAction(event -> {
primaryStage.hide();
NewClassWithStage newStage = new NewClassWithStage();
});
btn2.setOnAction(event -> {
primaryStage.show();
NewClassWithStage newStage = new NewClassWithStage();
});
VBox vb = new VBox (btn1, btn2);
vb.setSpacing(10);
vb.setPadding(new Insets(20));
BorderPane root = new BorderPane();
root.setBottom(vb);
Scene scene = new Scene (root, 300, 250);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) { launch(args); }
}
推荐阅读
- sql - 多个 UNION 返回杂乱的结果
- solr - 索引 solr 数据时无法修剪尾随空格?
- javascript - 在函数中使用 getElementsByClassName 选择所有元素,不起作用
- c - 如何在 macOS 上使用 Mach 内核设置主机异常端口?
- arrays - 如何连接()多个数组并检查值是否已经存在
- java - ArrayList 上使用的 Stream API reduce 未同步
- django - Django - 如何使用 CreateView 扩展自定义用户
- python - pandas - 在我的 df 中只保留那些在 df.index 和 df.columns 中常见的列名
- python - 记录多线程应用程序。[Errno 24] 打开的文件太多
- symfony - 带有 DataTables Omines 捆绑包的错误 Symfony 4