我禁用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