2015-02-24 29 views
2

的代碼顯示了這個示例,但不會關閉上了JavaFx一個javafx.scene.control.Dialog:爲什麼我無法以編程方式關閉JavaFX上的對話框?

Dialog<Void> dialog = new Dialog<Void>(); 
dialog.show(); 
dialog.close(); 

Dialog<Void> dialog = new Dialog<Void>(); 
dialog.show(); 
dialog.hide(); 

爲什麼?

+0

你能更具體一點嗎?由於Dialog來自java而不是javafx。 java中的Dialog類沒有close()函數。如果您想了解更多關於java awt對話框的知識,請查看本教程http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html以及javafx http://docs.oracle.com/。 javafx/2/ui_controls/file-chooser.htm – WonderWorld 2015-02-24 14:36:34

+0

此文章http://stackoverflow.com/questions/8309981/how-to-create-and-show-common-dialog-error-warning-confirmation-in-javafx -2應該給你一些關於javafx對話框的信息。 – WonderWorld 2015-02-24 14:42:08

+0

@WonderWorld我使用JavaFX中的javafx.scene.control.Dialog,而不是Java中的對話框類。不過謝謝你。 – belyid 2015-02-24 14:54:16

回答

2

根據JavaDoc:

往往不是,對話框顯示在一個模態和阻斷的方式。 「模態」指的對話框防止用戶交互與所述主應用程序,而它顯示,和「阻斷」意味着代碼執行停止在其中示出的對話框點

(重點煤礦)

+0

意思是在你的模態已經關閉後調用dialog.close()。 – atamanroman 2015-02-24 15:06:46

+0

@atamanroman未關閉,但已禁用。 – WonderWorld 2015-02-24 15:49:04

+0

@WonderWorld爲什麼禁用?文檔中說,代碼在「顯示」時被阻止,即直到它被關閉。 – 2015-02-24 15:50:42

15

我不知道爲什麼上面的回答已被標記爲答案,因爲它顯然不回答問題。根本的問題似乎是,它是不可能以編程方式關閉不具備關閉對話框/取消按鈕:打開

對話框,但不會關閉:

Dialog<Void> dialog = new Dialog<Void>(); 
dialog.show(); 
dialog.close();      

要關閉,添加一個取消按鈕,將其關閉它之前:

Dialog<Void> dialog = new Dialog<Void>(); 
dialog.show(); 
// Add dummy cancel button 
dialog.getDialogPane().getButtonTypes().addAll(ButtonType.CANCEL); 
// Dialog will now close 
dialog.close(); 
+0

那麼,設計決定毫無意義。正是我需要的,謝謝! – Moira 2017-05-30 20:18:44

5

較短的(但不低於「哈克」的方法)是使用特定類型(非void)的對話框,設置一個(任意)直接隱藏之前的結果,例如:

Dialog<Boolean> dialog = new Dialog<Boolean>(); 
dialog.show(); 
... 
// for closing 
dialog.setResult(Boolean.TRUE); 
dialog.close(); 
+0

根本不是「哈克」。對我來說是最好的迴應! – MonkeyJLuffy 2017-07-07 12:09:31

+0

這對我來說也是最好的迴應! – 2017-08-27 00:14:27

相關問題