ActionListener和ItemListener都用于在JCheckBox中触发事件?
那么,它们之间的区别是什么,在哪种情况下,它们中的一个比另一个更受欢迎?
发布于 2012-03-27 11:56:05
在JCheckBox的情况下,ItemListener和ActionListener都有相同的行为。但是,主要区别在于可以通过调用复选框上的setSelected(true)来触发ItemListener。作为编码实践,不要将ItemListener和ActionListener都注册到JCheckBox,以避免不一致。
发布于 2013-07-11 00:42:29
不同之处在于,当在JCheckBox上执行操作时,将触发ActionEvent,即通过鼠标单击、使用空格键或助记符更改其状态。无论JCheckBox是选中还是取消选中,它都不会真正侦听更改事件。
例如,如果将JCheckBox c1 (比如说)添加到ButtonGroup中。在ButtonGroup中更改其他JCheckBoxes的状态不会在其他JCheckBox上触发ActionEvent,而是会触发ItemEvent。
最后一句话:即使用户通过选择另一个ItemEvent来取消选中一个复选框,也会触发JCheckBox (当在ButtonGroup中时),但是ActionEvent不会像这样生成,相反,ActionEvent只侦听是否在JCheckBox ( ActionListener只注册到该only)上执行操作。它不知道ButtonGroup和所有其他选择/取消选择的内容。
发布于 2013-10-23 04:19:19
我在JButtons上使用addActionListener,而在JToggleButton上使用addItemListener更方便。与if(event.getStateChange()==ItemEvent.SELECTED)一起,在后一种情况下,每当选中/取消选中JToggleButton时,我都会添加事件。
https://stackoverflow.com/questions/9882845
复制相似问题