检测JRadioButton状态更改

时间:2009-09-15 01:52:16

标签: java swing radio-button

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

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

2 个答案:

答案 0 :(得分:48)

看看JRadioButton。addItemListener()

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

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

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

答案 1 :(得分:0)

我相信您想要添加ChangeListener实施。