Java问题,禁用控件仍然会触发事件!
问题描述:
我是Java新手,我正在编写NetBeans。问题是,无论何时我禁用控制 即jmenu.setEnabled(false),它仍会触发事件!哇靠!怎么样! :PJava问题,禁用控件仍然会触发事件!
我该如何预防?
答
为了适应Swing采用的事件模型,我认为您最好的选择是在处理程序中添加一个isEnabled()检查,您不希望在组件被禁用时执行该检查。
+0
是啊,也这么想;带了我一阵子。编程在C#让我懒惰在低级别的东西 – Arturo 2010-08-14 22:29:38
答
从javadoc:
注:禁用轻量级组件 并不妨碍它 接收MouseEvents。
注意:禁用重量级 容器会阻止此容器中的所有组件接收任何 输入事件。但禁用轻量级容器只会影响此容器的 。
您可能想查看disableEvents(long mask)。
答
考虑使用javax.swing.Action
控制的Swing组件。
通过这种方式,您可以直接使用Action.setEnabled
来禁用操作。其组件将自动采用其状态。当以这种方式禁用时,组件将不会收到MouseEvent。
请参阅有关构造函数JButton(Action)
的文档。
“东西”?和什么控制? – bakkal 2010-08-14 15:28:41
任何控制我已经使用到目前为止,如jmenu,jbutton – Arturo 2010-08-14 15:30:16
哪些事件?你可以发布更多的代码吗? – 2010-08-14 15:33:00