是否可以使 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 个按钮。
这种实现功能的方式显然效率不高。
- 有没有其他设计模式可以自动只选择一个?
- JToggleButtons 是否实现了任何可以使用的功能?
注意:如果相关,我正在使用 Netbeans 集成 UI 编辑器开发所有 Java swing JFrames/JDialogs。
一个经典的模式是创建一个单独的 actionlistener 函数来关闭(在您的情况下取消选择)所有按钮,然后获取操作源并将其打开。最后,您在所有按钮上设置了这个动作侦听器。
尝试将您的按钮添加到 ButtonGroup:
ButtonGroup group = new ButtonGroup();
group.add(button1);
group.add(button2);
...
我实现了以下 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 个按钮。 这种实现功能的方式显然效率不高。
- 有没有其他设计模式可以自动只选择一个?
- JToggleButtons 是否实现了任何可以使用的功能?
注意:如果相关,我正在使用 Netbeans 集成 UI 编辑器开发所有 Java swing JFrames/JDialogs。
一个经典的模式是创建一个单独的 actionlistener 函数来关闭(在您的情况下取消选择)所有按钮,然后获取操作源并将其打开。最后,您在所有按钮上设置了这个动作侦听器。
尝试将您的按钮添加到 ButtonGroup:
ButtonGroup group = new ButtonGroup();
group.add(button1);
group.add(button2);
...