2010-08-14 50 views
3

我是Java新手,我正在編寫NetBeans。問題是,無論何時我禁用控制 即jmenu.setEnabled(false),它仍會觸發事件!哇靠!怎麼樣! :PJava問題,禁用控件仍然會觸發事件!

我該如何預防?

+1

「東西」?和什麼控制? – bakkal 2010-08-14 15:28:41

+0

任何控制我已經使用到目前爲止,如jmenu,jbutton – Arturo 2010-08-14 15:30:16

+1

哪些事件?你可以發佈更多的代碼嗎? – 2010-08-14 15:33:00

回答

2

爲了適應Swing採用的事件模型,我認爲您最好的選擇是在處理程序中添加一個isEnabled()檢查,您不希望在組件被禁用時執行該檢查。

+0

是啊,也這麼想;帶了我一陣子。編程在C#讓我懶惰在低級別的東西 – Arturo 2010-08-14 22:29:38

7

javadoc

注:禁用輕量級組件 並不妨礙它 接收MouseEvents。

注意:禁用重量級 容器會阻止此容器中的所有組件接收任何 輸入事件。但禁用輕量級容器只會影響此容器的 。

您可能想查看disableEvents(long mask)

+0

謝謝,但然後,我可以做什麼來防止在禁用狀態下接收事件調用的輕量級組件,並仍允許重量級容器接收呼叫? – Arturo 2010-08-14 15:39:41

+0

aaah確定生病檢查:D – Arturo 2010-08-14 15:40:26

1

考慮使用javax.swing.Action控制的Swing組件。

通過這種方式,您可以直接使用Action.setEnabled來禁用操作。其組件將自動採用其狀態。當以這種方式禁用時,組件將不會收到MouseEvent。

請參閱有關構造函數JButton(Action)的文檔。