的代碼顯示了這個示例,但不會關閉上了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();
爲什麼?
的代碼顯示了這個示例,但不會關閉上了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();
爲什麼?
根據JavaDoc:
往往不是,對話框顯示在一個模態和阻斷的方式。 「模態」指的對話框防止用戶交互與所述主應用程序,而它顯示,和「阻斷」意味着代碼執行停止在其中示出的對話框點
(重點煤礦)
意思是在你的模態已經關閉後調用dialog.close()。 – atamanroman 2015-02-24 15:06:46
@atamanroman未關閉,但已禁用。 – WonderWorld 2015-02-24 15:49:04
@WonderWorld爲什麼禁用?文檔中說,代碼在「顯示」時被阻止,即直到它被關閉。 – 2015-02-24 15:50:42
我不知道爲什麼上面的回答已被標記爲答案,因爲它顯然不回答問題。根本的問題似乎是,它是不可能以編程方式關閉不具備關閉對話框/取消按鈕:打開
對話框,但不會關閉:
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();
那麼,設計決定毫無意義。正是我需要的,謝謝! – Moira 2017-05-30 20:18:44
較短的(但不低於「哈克」的方法)是使用特定類型(非void)的對話框,設置一個(任意)直接隱藏之前的結果,例如:
Dialog<Boolean> dialog = new Dialog<Boolean>();
dialog.show();
...
// for closing
dialog.setResult(Boolean.TRUE);
dialog.close();
根本不是「哈克」。對我來說是最好的迴應! – MonkeyJLuffy 2017-07-07 12:09:31
這對我來說也是最好的迴應! – 2017-08-27 00:14:27
你能更具體一點嗎?由於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
此文章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
@WonderWorld我使用JavaFX中的javafx.scene.control.Dialog,而不是Java中的對話框類。不過謝謝你。 – belyid 2015-02-24 14:54:16