2015-06-25 55 views
0

我試圖製作一個Modal窗口,通過舞臺打開。這是代碼:JavaFX Stage Modality

Stage stage = new Stage();        
Parent root = fxmlLoader.load(); 
stage.setScene(new Scene(root)); 
stage.setTitle("Stuff"); 
stage.initModality(Modality.WINDOW_MODAL); 
stage.show(); 

但是,雖然沒有實際的成功,但我能夠點擊基礎窗口。 有什麼我做錯了嗎?

編輯: 我在Oracle的網站檢查前面的文件,但能找到一個解決方案,因爲顯示的窗口的行爲並沒有任何接近它從一個模態窗口什麼期望。 我使用該項目的JDK是1.8.0_40

編輯2: 手柄中的代碼,通過ItachiUchiha

的要求
Boolean confirmacion = MessageUtil.ventanaConfirmacion(RecursosUtil.creaTextoProperties("confNoRealizar")); 

if (confirmacion) { 
    try { 
     TbInspeccion inspeccionSeleccionada = (TbInspeccion) getTableRow().getItem(); 

     URL location = cargaURLFXML(OBSERVACIONESFXML); 
     FXMLLoader fxmlLoader = cargaFXML(location); 

     stage = new Stage(); 
     Parent root = fxmlLoader.load(); 
     stage.setScene(new Scene(root)); 
     stage.setTitle("Observaciones"); 

     ObservacionesController controller = (ObservacionesController) fxmlLoader.getController(); 
     controller.setStage(stage); 
     controller.setInspeccion(inspeccionSeleccionada); 
     controller.setProvider(provider); 
     controller.setTablaPrincipal(tablaPrincipal); 

     stage.initModality(Modality.APPLICATION_MODAL); 
     stage.show(); 
    } catch (IOException ex) { 
     Exceptions.printStackTrace(ex); 
    } 
} 

謝謝您的時間和幫助。

回答

3

更換

stage.initModality(Modality.WINDOW_MODAL); 

stage.initModality(Modality.APPLICATION_MODAL); 

前者塊如下:

定義阻止被傳遞到其 整個所有者窗口層次事件模式窗口。

而後者:

限定從塊事件被傳遞到任何其他 應用程序窗口模式窗口。

來源:https://docs.oracle.com/javase/8/javafx/api/javafx/stage/Modality.html

取決於你爲什麼要實現上述行爲,你可能想使用JavaFX 8 Dialog從JDK 8更新40

+0

我也嘗試了APPLICATION_MODAL,但仍然很奇怪。在提出問題之前,我檢查了文檔。但無法找到解決方案。 – Catersa

0

您需要添加stage.initOwner()沿Modality.WINDOW_MODAL到它標識主人:

stage.initOwner(primaryStage); 
stage.initModality(Modality.WINDOW_MODAL); 

或者,您可以只使用Modality.APPLICATION_MODAL沒有所有者。

+0

我嘗試了兩種,但窗口仍然沒有顯示「Modal」行爲。仍然很奇怪。 :(。謝謝你的快速響應。 – Catersa

+0

你在哪裏添加這段代碼?是否顯示'primary stage'?是否在按鈕的動作事件中? – ItachiUchiha

+0

代碼是其按鈕句柄的一部分存在於TableCell中 – Catersa