【发布时间】:2019-11-09 10:30:31
【问题描述】:
我实现了以下 JDialog:
[ jToggleButton1 ] [ jToggleButton2 ] [ jToggleButton2 ]
我希望当用户按下 (-toggles-) 任何 JToggleButtons 时,其他两个将其状态更改为未选中。 这将模拟经典的“一次只按下一个”按钮集。
我已经使用以下方法实现了这种行为:
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。您发布的逻辑似乎表明您只想在当前未选择按钮时调用逻辑。如果是这样,那么您应该在切换按钮上使用
ItemListener,然后您只能在当前未选择按钮时执行逻辑。见How to Write an ItemListener。 -
感谢您的澄清。在这种特定情况下,我实际上并不在意,因为在已选择按钮时按下按钮只会将主窗口更新到与现在完全相同的状态,但在其他情况下它可能是相关的,所以最好知道如何正确实现
ItemListener。
标签: java swing jtogglebutton