检测 JRadioButton 状态更改

2022-09-01 07:38:01

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

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


答案 1

看看JRadioButton。addItemListener()

编辑:您不太可能想要使用更改Listener,因为它每次单击都会触发多次。项列表每次单击仅触发一次。请参阅此处

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

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

仅当选定或取消选择的状态发生更改时,才会触发项列表程序。这意味着用户可以多次单击它,如果它没有改变,它就不会触发。在您的处理程序方法中,您将必须有一个块检查或状态,并在那里执行任何操作:ifSELECTEDDESELECTED

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

它只是工作得更好,因为您知道,如果您在该方法中,那么单选按钮刚刚被选中或取消选择,而不是用户只是出于某种未知原因在界面上敲击。


答案 2

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