检测JRadioButton状态更改

当用鼠标单击时,如何检测JRadioButton何时从“未选定”更改为“选定”? 我已尝试在按钮上使用ActionListener,但每次单击radiobutton时都会触发,而不仅仅是在将状态更改为“selected”时。

我曾想过维护一个布尔变量来记住按钮的状态,并在ActionListener中测试它以查看是否要更改其状态,但我想知道是否有更好或更清洁的解决方案。

看看JRadioButton。 addItemListener ()

编辑:您不太可能想要使用changeListener,因为它每次点击会多次触发。 每次单击时,itemListener仅触发一次。 看这里

EDIT2:为了扩展这一点,每次用户点击它时,jradioButton上的actionListener都会触发,即使它已被选中。 如果那就是你想要的,那很好,但我觉得很烦人。 我只想通知它被选中或取消选中。

ChangeListener将触发各种事物,这意味着您的侦听器每次点击将收到5个或更多事件。 不好。

当选定或取消选择状态更改时,才会触发itemlistener。 这意味着用户可以多次单击它,如果它没有改变则不会触发。 在你的处理程序方法中,你必须有一个if块检查SELECTEDDESELECTED状态并在那里做任何事情:

 @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. } } 

它只是工作得更好,因为你知道如果你在方法中,那么单选按钮刚刚被选中或取消选择,而不是用户只是因为一些未知原因而撞击界面。

我相信你想要添加一个ChangeListener实现。

Sun的按钮,复选框和单选按钮教程 。