代码之家  ›  专栏  ›  技术社区  ›  cgull

检测JradioButton状态更改

  •  28
  • cgull  · 技术社区  · 15 年前

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

    我曾经考虑过维护一个能记住按钮状态的布尔变量,并在actionListener中测试它,看看是否要更改它的状态,但是我想知道是否有更好或更干净的解决方案。

    2 回复  |  直到 6 年前
        1
  •  47
  •   Nemi    6 年前

    看看jradiobutton。 addItemListener ()

    编辑:您不太可能希望使用ChangeListener,因为它每次单击都会触发多次。itemListener每次单击只激发一次。 See here

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

    它的工作效果更好,因为您知道如果您使用的是方法,那么单选按钮要么被选中,要么被取消选择,而不是因为某些未知的原因,用户只是在点击界面。

        2
  •  0
  •   Rob Di Marco    15 年前

    我相信你想加一个 ChangeListener 实施。