Java 是否有可能使一个JToggleButton取消选择其他JToggleButton,使其具有与传统单选按钮类似的效果?

Java 是否有可能使一个JToggleButton取消选择其他JToggleButton,使其具有与传统单选按钮类似的效果?,java,swing,jtogglebutton,Java,Swing,Jtogglebutton,我已经实现了以下JDialog: [ jToggleButton1 ] [ jToggleButton2 ] [ jToggleButton2 ] 我希望当用户按下任何一个JToggleButtons(-toggles-)时,其他两个按钮将其状态更改为未选中。 这将模拟经典的“一次只按下一个”按钮集 我通过以下方式实现了此行为: private void btn1ActionPerformed(java.awt.event.ActionEvent evt){ //做事 btn1

我已经实现了以下JDialog:

[ jToggleButton1 ]     [ jToggleButton2 ]     [ jToggleButton2 ]
我希望当用户按下任何一个JToggleButtons(-toggles-)时,其他两个按钮将其状态更改为未选中。 这将模拟经典的“一次只按下一个”按钮集

我通过以下方式实现了此行为:

private void btn1ActionPerformed(java.awt.event.ActionEvent evt){
//做事
btn1.setSelected(true);
btn2.setSelected(假);
btn3.setSelected(假);
}
私有void btn2ActionPerformed(java.awt.event.ActionEvent evt){
//做事
btn1.setSelected(假);
btn2.setSelected(true);
btn3.setSelected(假);
}
私有void btn3ActionPerformed(java.awt.event.ActionEvent evt){
//做事
btn1.setSelected(假);
btn2.setSelected(假);
btn3.setSelected(true);
}
虽然所示的示例有3个按钮,但我的真实场景有15/20个按钮。 这种实现功能的方式显然是没有效率的

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

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

    一个经典模式是创建一个actionlistener函数,关闭(在您的案例中取消选择)所有按钮,然后获取操作源并将其打开。最后,您可以在所有按钮上设置此actionlistener。

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

    尝试将按钮添加到按钮组:

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

    尝试将按钮添加到按钮组:

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

    附带说明:这也可以使用NetBeansIDEUIBuilder来完成。“Button Group”对象需要拖放(显然不可见),然后选择所有按钮并修改“Button Group”属性。“Button Group”对象需要拖放(显然不可见),然后选择所有按钮并修改“Button Group”属性。注意:每次单击按钮时都会调用ActionListener。您发布的逻辑似乎表明您只想在当前未选择按钮时调用该逻辑。如果是这样,那么您应该在切换按钮上使用
    itemstener
    ,然后您只能在当前未选择该按钮时执行逻辑。谢谢你的澄清。在这种特殊情况下,我并不在意,因为在已经选中的情况下按下按钮只会将主窗口更新为与现在完全相同的状态,但在其他情况下,它可能与此相关,因此最好知道如何正确实现
    ItemListener
    。注意:每次单击按钮时都会调用ActionListener。您发布的逻辑似乎表明您只想在当前未选择按钮时调用该逻辑。如果是这样,那么您应该在切换按钮上使用
    itemstener
    ,然后您只能在当前未选择该按钮时执行逻辑。谢谢你的澄清。在这种特定情况下,我实际上并不在意,因为在已经选中的情况下按下按钮只会将主窗口更新到与现在完全相同的状态,但在其他情况下,它可能是相关的,因此最好知道如何正确实现
    ItemListener