我禁用JCheckbox
,然後在setEnabled(...)
方法的幫助下啓用它。Java Swing - 禁用JCheckbox中的問題
但問題是,如果我禁用一個未選中的複選框,那麼在啓用它後,它就會被選中。
我希望所有人在被禁用前都具有相同的狀態。
我禁用JCheckbox
,然後在setEnabled(...)
方法的幫助下啓用它。Java Swing - 禁用JCheckbox中的問題
但問題是,如果我禁用一個未選中的複選框,那麼在啓用它後,它就會被選中。
我希望所有人在被禁用前都具有相同的狀態。
您是否使用ActionListener啓用/禁用JCheckBox?如果是這樣,那很正常,因爲當你點擊複選框時,isSelected()狀態會改變。
您可以做的是使用isSelected()和setSelected()方法添加檢查。
我沒有得到你的答案。無論如何,我正在通過開始按鈕的'xxxxActionPerformed()'方法禁用/啓用複選框。 – 2010-04-27 02:58:24
styx777試圖說你應該在調用'setEnabled()'後調用'setSelected()'方法。所以你可以選擇你想要的組件。 – Ham 2010-04-27 06:28:06
下面的代碼工作爲你描述:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class CheckboxTest implements ActionListener{
private JCheckBox checkbox = new JCheckBox();
private JButton btn = new JButton("Enable");
public CheckboxTest(){
JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.getContentPane().add(panel);
checkbox.setEnabled(false);
btn.addActionListener(this);
panel.add(checkbox);
panel.add(btn);
frame.setSize(400, 400);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args){
new CheckboxTest();
}
public void actionPerformed(ActionEvent e) {
checkbox.setEnabled(!checkbox.isEnabled());
btn.setText(checkbox.isEnabled()?"Disable":"Enable");
}
}
如果調用setEnabled
不應該影響選擇的狀態。如果是,那麼我建議你重新檢查你的代碼,看看是否有任何東西可以解釋這種行爲。正如其他人所建議的,也許你發佈了一個可能有用的代碼示例。
更新: 爲了清楚起見,複選框的選定狀態只有兩種方式可以更改。
setSelected
的調用setEnabled
確實不改變選擇狀態。 因此,在你的代碼中必然會引起這種情況。
你可以發佈一些代碼來演示這個問題嗎? – lins314159 2010-04-27 04:54:46
雙向bean數據綁定可以在這裏抓住你。我遇到了同樣的問題,這只是我的bean綁定。 – clinux 2016-06-22 23:57:03