是否可以使 JToggleButton 取消选择其他 JToggleButton 以产生与传统单选按钮类似的效果?

Is it possible to make a JToggleButton deselect other JToggleButton to have a similar effect to traditional radio buttons?

我实现了以下 JDialog:

[ jToggleButton1 ]     [ jToggleButton2 ]     [ jToggleButton2 ]

我希望当用户按下(-切换-)任何一个 JToggleButton 时,其他两个将其状态更改为未选中。 这将模拟经典的 "only one pushed at one time" 按钮集。

我使用以下方式实现了此行为:

private void btn1ActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // do stuff
        btn1.setSelected(true);
        btn2.setSelected(false);
        btn3.setSelected(false);
}

private void btn2ActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // do stuff
        btn1.setSelected(false);
        btn2.setSelected(true);
        btn3.setSelected(false);
}

private void btn3ActionPerformed(java.awt.event.ActionEvent evt) {                                      
        // do stuff
        btn1.setSelected(false);
        btn2.setSelected(false);
        btn3.setSelected(true);
}

虽然显示的示例有 3 个按钮,但我的真实场景有 15/20 个按钮。 这种实现功能的方式显然效率不高。

  1. 有没有其他设计模式可以自动只选择一个?
  2. JToggleButtons 是否实现了任何可以使用的功能?

注意:如果相关,我正在使用 Netbeans 集成 UI 编辑器开发所有 Java swing JFrames/JDialogs。

一个经典的模式是创建一个单独的 actionlistener 函数来关闭(在您的情况下取消选择)所有按钮,然后获取操作源并将其打开。最后,您在所有按钮上设置了这个动作侦听器。

尝试将您的按钮添加到 ButtonGroup:

ButtonGroup group = new ButtonGroup();
group.add(button1);
group.add(button2);
...