也許這個例子可能對我有所幫助。
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