我读到JButton
实现ItemSelectable
并且文档中有addItemListener
方法,所以我可以说它可以生成ItemEvent
...但是当我使用JButton
(但也为JMenuItem
)注册该事件的接口没有增加?
为什么?
据我所知,如果报告文件中的某个组件有一个添加....监听器就意味着它支持该事件......但是经验并不常见......
真相是什么?
答案 0 :(得分:3)
“按下”按钮(触发ActionEvent
)和“已选择”按钮(触发ItemEvent
)之间存在差异。默认情况下,JButton
由javax.swing.DefaultButtonModel
支持。如果您查看默认按钮模型中的setPressed
和setSelected
方法,您将看到触发不同事件的代码。
因此,如果您以编程方式调用JButton.setSelected
,则会触发您的项侦听器。如果单击该按钮,则只会获得操作事件。
另请注意,使用JButton
(例如,与JToggleButton
不同),在选择它时,您可能看不到多少视觉效果。