检测 JRadioButton 状态更改
2022-09-01 07:38:01
如何检测当用鼠标单击时JRadioButton何时从“未选择”更改为“已选择”?我尝试过在按钮上使用 ActionListener,但每次单击单选按钮时都会触发该按钮,而不仅仅是当它的状态更改为“选定”时。
我想过维护一个记住按钮状态的布尔变量,并在ActionListener中对其进行测试,以查看是否要更改其状态,但我想知道是否有更好或更干净的解决方案。
如何检测当用鼠标单击时JRadioButton何时从“未选择”更改为“已选择”?我尝试过在按钮上使用 ActionListener,但每次单击单选按钮时都会触发该按钮,而不仅仅是当它的状态更改为“选定”时。
我想过维护一个记住按钮状态的布尔变量,并在ActionListener中对其进行测试,以查看是否要更改其状态,但我想知道是否有更好或更干净的解决方案。
看看JRadioButton。addItemListener()
编辑:您不太可能想要使用更改Listener,因为它每次单击都会触发多次。项列表每次单击仅触发一次。请参阅此处
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.
}
}
它只是工作得更好,因为您知道,如果您在该方法中,那么单选按钮刚刚被选中或取消选择,而不是用户只是出于某种未知原因在界面上敲击。
我相信你想添加一个实现。ChangeListener