检测JRadioButton状态更改
问题内容:
当用鼠标单击时,如何检测JRadioButton从“未选中”更改为“选中”?我曾尝试在按钮上使用ActionListener,但是每次单击单选按钮时都会触发该事件,而不仅仅是在将状态更改为“选定”时触发。
我曾想过要维护一个记住按钮状态的布尔变量,并在ActionListener中对其进行测试以查看是否更改其状态,但是我想知道是否有更好或更干净的解决方案。
问题答案:
看一下JRadioButton。addItemListener()
编辑:不太可能要使用changeListener,因为它每次单击会触发多次。每次点击仅触发一次itemListener。
看这里
EDIT2:只是为了对此进行扩展,即使用户已选择jradioButton上的actionListener,它也会在用户每次单击时触发。如果那是您想要的,那很好,但是我觉得很烦。我只想通知它已被选中或取消选中。
一个ChangeListener将会触发各种各样的事情,这意味着您的监听器每次点击将收到5个或更多事件。不好。
仅
当选定或取消选定状态更改时,条目侦听器才会触发。这意味着用户可以多次单击它,并且如果不更改它也不会触发。在您的处理程序方法中,您将必须具有if
检查SELECTED
或DESELECTED
状态的块,然后在其中进行任何操作:
@Override
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
// Your selected code here.
}
else if (e.getStateChange() == ItemEvent.DESELECTED) {
// Your deselected code here.
}
}
这样做会更好,因为您知道,如果您在方法中,则单选按钮已被选中或取消选中,而不是因为某种未知的原因,用户只是在界面上敲打。