JCheckbox - ActionListener 和 ItemListener?

ActionListener 和 ItemListener 都用于通过 JCheckBox 触发事件?

那么,它们之间有什么区别,在这种情况下,其中一个比另一个更可取?


答案 1

两者以及 ,在具有相同行为的情况下。但是,主要区别在于可以通过调用“在”复选框上“来触发。作为编码实践,不要同时注册和 ,以避免不一致。ItemListenerActionListenerJCheckBoxItemListenersetSelected(true)ItemListenerActionListenerJCheckBox


答案 2

不同之处在于,当对 执行操作时触发,即通过用鼠标或空格键或助记符单击它来更改其状态。它并不真正侦听更改事件,无论是否选择。ActionEventJCheckBoxJCheckBox

例如,如果 (比如)被添加到 .改变其他的状态不会对他者开火,而是被开火。JCheckBox c1ButtonGroupJCheckBoxesButtonGroupActionEventJCheckBoxItemEvent

最后的话:即使用户通过选中另一个复选框(当在 a 中)取消选中一个复选框时,也会触发 An,但是不会像这样生成,而是只侦听是否对 (仅注册 了 该)执行的操作。它不知道和所有其他选择/取消选择的东西。ItemEventJCheckBoxButtonGroupActionEventActionEventJCheckBoxActionListenerButtonGroup


推荐