在切换到第三方窗口并再次切换到Application Stage时隐藏了Parent Stage

时间:2016-08-02 17:10:06

标签: java javafx modal-dialog

我的父级“stage1”正在打开儿童舞台“stage2”,我已经设置了儿童舞台的模态,如下所示。

stage2.initModality(Modality.APPLICATION_MODAL);

现在当我从stage1打开stage2时,stage1出现在stage2后面,这是预期的,但是当我按下“Ctrl + Tab”键时,控制切换到第3个paty应用程序,例如“Outlook”,然后我再次按“Ctrl +选项卡“键,它返回到我们的主应用程序,它显示stage2但stage1显示为隐藏。我的期望是stage1应该隐藏在stage2之后。

任何帮助都非常适合。

1 个答案:

答案 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时,这就是他所知道的,因为它不是父母,但是当它有所有者时显示只有主人