2011-03-08 29 views
0

我想實現如下內容: 當我的應用程序執行一些批評操作或產生一些錯誤時,我想顯示一個警告JDialog,告訴用戶發生了什麼。當顯示一個JDialog時,全局禁用所有鼠標輸入

現在,因爲一些錯誤可能會使我的應用程序進入不一致的狀態,直到它們解決爲止,我想暫時禁用鼠標事件派發到除顯示JDialog之外的所有組件(包括JMenu,JToolbar,..)。

有沒有辦法做到這一點?或者我必須手動從應用程序的所有組件中刪除所有鼠標偵聽器,然後重新添加它們?

回答

-3

最簡單的方法是調用

frame.setEnabled(false); 

,其中框架是頂層窗口。

請注意,上面的soln可能會改變幀的外觀,直到它再次啓用。對於真正的控制,人們玩EventQueue。

+2

-1:當對話框關閉時,您需要再次啓用框架。模態對話框僅用於此目的。 – 2011-03-08 11:01:30

6

使對話「模態」與setModal(true)

+0

未設置保密政策嗎? – Heisenbug 2011-03-08 10:24:13

+0

@Overbose:你可以使用'setModalityType()'(http://download.oracle.com/javase/6/docs/api/java/awt/Dialog.html#setModalityType(java.awt.Dialog.ModalityType))相反,如果你喜歡,但我無法在任何地方找到@Deprecated警告。它不是很好*風格*,因爲它阻止了整個用戶界面,你應該避免這種情況。但就你而言,模態對話框是正確的解決方案。 – 2011-03-08 11:03:20

+0

@Aaron Digulla:我認爲阻止整個用戶界面正是我所需要的,因爲在閱讀對話框顯示的錯誤並接受後果之前,用戶不會進行任何其他操作。在任何情況下,我會看setModalityType()太..謝謝 – Heisenbug 2011-03-08 11:27:58

相關問題