我的父级“stage1”正在打开儿童舞台“stage2”,我已经设置了儿童舞台的模态,如下所示。
stage2.initModality(Modality.APPLICATION_MODAL);
现在当我从stage1打开stage2时,stage1出现在stage2后面,这是预期的,但是当我按下“Ctrl + Tab”键时,控制切换到第3个paty应用程序,例如“Outlook”,然后我再次按“Ctrl +选项卡“键,它返回到我们的主应用程序,它显示stage2但stage1显示为隐藏。我的期望是stage1应该隐藏在stage2之后。
任何帮助都非常适合。
答案 0 :(得分:5)
这是因为Stage2.getOwner() == null
是真的。当它是false
时,你的期望就是它的工作方式。所以要解决你的问题呢
Stage2.initOwner(Stage1);
<强> ediit 强>
这是一些演示
@Override
public void start(Stage stage) {
Pane p = new Pane();
p.setStyle("-fx-background-color: red");
stage.setTitle("I AM THE PARENT");
Scene scene = new Scene(p);
stage.setWidth(600);
stage.setHeight(600);
stage.setScene(scene);
stage.show();
Stage s = new Stage(StageStyle.DECORATED);
s.initModality(Modality.APPLICATION_MODAL);
p = new Pane();
p.setStyle("-fx-background-color: yellow");
s.setScene(new Scene(p,150,150));
//s.initOwner(stage); //with this commented it wont work
s.show();
}
另外你会注意到当你按CTRL + TAB
窗口弹出窗口只显示你的第二个窗口STAGE2
时,这就是他所知道的,因为它不是父母,但是当它有所有者时显示只有主人