Java问题,禁用控件仍然会触发事件!

Java问题,禁用控件仍然会触发事件!

问题描述:

我是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

为了适应Swing采用的事件模型,我认为您最好的选择是在处理程序中添加一个isEnabled()检查,您不希望在组件被禁用时执行该检查。

+0

是啊,也这么想;带了我一阵子。编程在C#让我懒惰在低级别的东西 – Arturo 2010-08-14 22:29:38

javadoc

注:禁用轻量级组件 并不妨碍它 接收MouseEvents。

注意:禁用重量级 容器会阻止此容器中的所有组件接收任何 输入事件。但禁用轻量级容器只会影响此容器的 。

您可能想查看disableEvents(long mask)

+0

谢谢,但然后,我可以做什么来防止在禁用状态下接收事件调用的轻量级组件,并仍允许重量级容器接收呼叫? – Arturo 2010-08-14 15:39:41

+0

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

考虑使用javax.swing.Action控制的Swing组件。

通过这种方式,您可以直接使用Action.setEnabled来禁用操作。其组件将自动采用其状态。当以这种方式禁用时,组件将不会收到MouseEvent。

请参阅有关构造函数JButton(Action)的文档。