我有一些按钮(JButton),我想要禁用“已选择”的按钮,所以如果你点击另一个按钮,它将变为禁用,所有其他按钮启用。它几乎就像ButtonGroup
,而不是“选择/取消选择”它是“启用/禁用”。
我不知道是否存在某些事情或者最佳方法是什么。
ButtonGroup
并覆盖所有功能ButtonModel
和ButtonGroup
ActionListener
(相同)我认为“扩展ButtonGroup
...”是最好的,但我不确定这是我问的原因。
如何使用启用/禁用ButtonGroup
?
例如:
nb:对于不同的按钮组,它会被多次使用
答案 0 :(得分:0)
将所有需要的按钮保留在按钮组中:
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(jbuttonA);
buttonGroup.add(jButtonB);
buttonGroup.add(jButtonC);
然后,您可以使用JButton#isSelected()检查是否选择了替代按钮,然后使用ButtonGroup#setSelected(ButtonModel,boolean)(de)选择按钮组。
此外,您可以在单击使用匿名动作侦听器时提示它;这要求您将外部组件声明为final
。
如果您要停用JButton
,只需使用JButton#setVisible(boolean)
即可。
如果您需要进一步解释,请告诉我。
答案 1 :(得分:0)
也许我做的这个例子可能有所帮助。
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Example extends JFrame{
private JButton b1 = new JButton("B1");
private JButton b2 = new JButton("B2");
private Listener listener = new Listener();
public static void main(String args[]) {
new Example();
}
public Example() {
setSize(500,500);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
b1.addActionListener(listener);
b2.addActionListener(listener);
add(b1);
add(b2);
setVisible(true);
}
private class Listener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == b1) {
//Somehow loop through all your JButton group
//And change button.setIcon(), etc.. properties..
b1.setEnabled(false);
b2.setEnabled(true);
}
else if(e.getSource() == b2) {
b2.setEnabled(false);
b1.setEnabled(true);
}
}
}
}