我正在禁用 aJCheckbox
然后在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
,那不应该影响选定的状态。如果是,那么我建议你重新检查你的代码,看看是否有任何东西可以解释这种行为。正如其他人所建议的那样,也许如果您发布可能有用的代码示例。
更新:为了清楚起见,只有两种方法可以更改复选框的选中状态。
setSelected
调用setEnabled
不会更改选定状态。因此,您的代码中一定有一些奇怪的东西导致了这种情况。