メソッドを使用して、を無効にしてJCheckbox
から有効にしていますsetEnabled(...)
。
しかし、問題は、選択されていないチェックボックスを無効にすると、有効にした後に選択されることです。
有効にした後、無効にする前と同じ状態にする必要があります。
以下のコードは、説明どおりに機能します。
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");
}
}
ActionListener を使用して JCheckBox を有効/無効にしていますか? その場合、チェックボックスをクリックすると isSelected() ステータスが変化するため、それは正常です。
できることは、isSelected() および setSelected() メソッドを使用してチェックを追加することです。
呼び出しsetEnabled
ても、選択した状態には影響しません。そうである場合は、コードを再調査して、この動作の原因となるものがあるかどうかを確認することをお勧めします。他の誰かが示唆したように、役に立つかもしれないコードサンプルを投稿するとよいでしょう。
更新: 完全に明確にするために、チェックボックスの選択状態を変更できる方法は 2 つしかありません。
setSelected
を呼び出しても、選択された状態は変更されsetEnabled
ません。したがって、これを引き起こしているコードに奇妙な何かがあるに違いありません。