也许这个例子可能对我有所帮助。
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);
}
}
}
}
我不确定要了解您的“替代按钮”。所有按钮都必须可见,即使是禁用的按钮也必须禁用但未选中。如果你点击'jButtonB',那么它就变为禁用状态,'JButton' A和C使能,....总是只有一个被禁用。因此,如果我的理解正确,您的解决方案将不会被选中,但它也不会被禁用。 – Duffydake
@Duffydake - 禁用按钮的目的是什么?你不能只是将它的可见性设置为'false'吗?从你的问题中,你所做的只是点击图标(及其颜色)。您可以添加一个标志来检查该按钮是否启用/禁用,并相应地更改图标 – Juxhin
@ Juxhin目的并不重要。你不能知道,但我使用LAF,当某些东西被禁用时,它会变成黑色和白色,我不会更改任何图标,...在问题图像上,我只是扩展了'ButtonGroup'并用“setEnable”覆盖所有函数。 – Duffydake