【问题标题】:JavaFX - How to open a new stage in same window?JavaFX - 如何在同一窗口中打开一个新阶段?
【发布时间】:2017-02-21 01:19:08
【问题描述】:

我是初学者,不知道如何在 javaFX8 的同一窗口中打开一个新的stage

Stage modal_stage = new Stage();
modal_stage.setScene(new Scene(root, 500, 575));
modal_stage.setTitle("modal");
modal_stage.initModality(Modality.APPLICATION_MODAL);
modal_stage.initOwner(modal_stage.getOwner());
modal_stage.setResizable(false);
modal_stage.show();

当我通过上面的代码打开一个新的stage时,stage总是在不同的窗口中打开,像这样:

但我希望新的stage不会在StartMenu任务栏中创建新图标,就像Jframe的Swing的Dialog一样---无论我在jframe下打开多少个对话框,它总是显示为一个窗口。那么我能做什么呢? 对不起,我的英语不太好,我希望我已经澄清了这个问题。

【问题讨论】:

  • 您需要将新阶段的所有者设置为现有阶段。 modalStage.initOwner(modalStage.getOwner()) 什么都不做(你实际上是在做 owner = owner)。
  • 感谢您的提示,它正在工作!

标签: javafx modal-dialog stage


【解决方案1】:

假设你有一个父阶段:

Stage parentStage = new Stage();

还有子舞台:

Stage childStage = new Stage();

您必须将 childStage 的 init 所有者设置为父级:

childStage.initOwner(parent);

提到上面的代码必须在childStage 之前被调用。

另外提一下,这样做你会有一些行为,比如当parent child 被最小化时,childStage 也会被最小化。

【讨论】:

  • 感谢您的回答!我像这样重写代码:“modal_stage.initOwner(main_stage);”,它正在工作!
  • 谢谢,任务栏没有双阶段
猜你喜欢
  • 1970-01-01
  • 2011-08-26
  • 1970-01-01
  • 2021-06-30
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2020-01-18
  • 1970-01-01
相关资源
最近更新 更多