java-JButton上的itemStateChanged

我读到一个JButton实现了ItemSelectable,并且在文档中它具有方法addItemListener,所以我可以争辩说它可以生成一个ItemEvent …但是当我向一个JButton注册(还为一个JMenuItem注册)时,该事件没有发生吗?

为什么?

我了解,如果在docs中报告某个组件具有add ….侦听器,则表示它支持该事件…但出于经验的考虑,这种情况并不常见.

真相是什么

解决方法:

“按下”按钮(触发一个ActionEvent)和一个“选择”按钮(触发ItemEvent)之间是有区别的.默认情况下,JButton由javax.swing.DefaultButtonModel支持.如果查看默认按钮模型中的setPressed和setSelected方法,您将看到触发不同事件的代码.

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

还要注意,使用JButton(与JToggleButton不同)时,选择它时可能看不到太多视觉效果.

上一篇:javascript-跨浏览器事件处理


下一篇:javascript-如何使用事件冒泡取消