0

メソッドを使用して、を無効にしてJCheckboxから有効にしていますsetEnabled(...)

しかし、問題は、選択されていないチェックボックスを無効にすると、有効にした後に選択されることです。

有効にした後、無効にする前と同じ状態にする必要があります。

4

3 に答える 3

1

以下のコードは、説明どおりに機能します。

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");       
    } 
}
于 2010-04-27T06:02:26.637 に答える
1

ActionListener を使用して JCheckBox を有効/無効にしていますか? その場合、チェックボックスをクリックすると isSelected() ステータスが変化するため、それは正常です。

できることは、isSelected() および setSelected() メソッドを使用してチェックを追加することです。

于 2010-04-27T01:50:16.740 に答える
1

呼び出しsetEnabledても、選択した状態には影響しません。そうである場合は、コードを再調査して、この動作の原因となるものがあるかどうかを確認することをお勧めします。他の誰かが示唆したように、役に立つかもしれないコードサンプルを投稿するとよいでしょう。

更新: 完全に明確にするために、チェックボックスの選択状態を変更できる方法は 2 つしかありません。

  1. への呼び出しsetSelected
  2. ユーザーがチェックボックスをクリックする

を呼び出しても、選択された状態は変更されsetEnabledません。したがって、これを引き起こしているコードに奇妙な何かがあるに違いありません。

于 2010-04-27T21:58:29.503 に答える