JButton上的itemStateChanged

时间:2010-09-14 12:05:13

标签: java swing events

我读到JButton实现ItemSelectable并且文档中有addItemListener方法,所以我可以说它可以生成ItemEvent ...但是当我使用JButton(但也为JMenuItem)注册该事件的接口没有增加?

为什么?

据我所知,如果报告文件中的某个组件有一个添加....监听器就意味着它支持该事件......但是经验并不常见......

真相是什么?

1 个答案:

答案 0 :(得分:3)

“按下”按钮(触发ActionEvent)和“已选择”按钮(触发ItemEvent)之间存在差异。默认情况下,JButtonjavax.swing.DefaultButtonModel支持。如果您查看默认按钮模型中的setPressedsetSelected方法,您将看到触发不同事件的代码。

因此,如果您以编程方式调用JButton.setSelected,则会触发您的项侦听器。如果单击该按钮,则只会获得操作事件。

另请注意,使用JButton(例如,与JToggleButton不同),在选择它时,您可能看不到多少视觉效果。