2016-08-02 47 views
7

我的父母階段「stage1」正在打開孩子階段「stage2」,我已經設置了孩子階段的模態如下。切換到第三方窗口隱藏父級,並再次切換到應用階段

stage2.initModality(Modality.APPLICATION_MODAL); 

現在,當我從stage1的開放階段2,階段1是似乎落後於預期階段2,但是當我按下「Ctrl + Tab」鍵,控制切換到第3帕蒂的一個應用,例如「瞭望」,然後我再按「Ctrl + Tab」鍵,它將返回到我們的主要應用程序,它顯示stage2,但stage1顯示爲隱藏。我的期望是stage1應該隱藏在stage2之後。

任何幫助大大appriciated。

回答

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 ,那是他所知道的,因爲它沒有父母,但是當它擁有者只顯示店主

+0

完美!它解決了我的問題。非常感謝 !!! – DeepInJava