0

我正在禁用 aJCheckbox然后在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,那不应该影响选定的状态。如果是,那么我建议你重新检查你的代码,看看是否有任何东西可以解释这种行为。正如其他人所建议的那样,也许如果您发布可能有用的代码示例。

更新:为了清楚起见,只有两种方法可以更改复选框的选中状态。

  1. 打电话给setSelected
  2. 用户点击复选框

调用setEnabled不会更改选定状态。因此,您的代码中一定有一些奇怪的东西导致了这种情况。

于 2010-04-27T21:58:29.503 回答