我想要做的是锁定一个复选框,直到至少选择一个复选框。
这就是我所拥有的。
JCheckBox cbox1 = new JCheckBox("box1");
cbox1.setBounds(5, 0, 61, 34); // Bounds are just for example purposes
contentPane.add(cbox1);
JCheckBox cbox2 = new JCheckBox("box2");
cbox2.setBounds(5, 0, 61, 34); // Bounds are just for example purposes
contentPane.add(cbox2);
JCheckBox cbox3 = new JCheckBox("box3");
cbox3.setBounds(5, 0, 61, 34); // Bounds are just for example purposes
contentPane.add(cbox3);
cbox3.setEnabled(false);
JCheckBox cbox4 = new JCheckBox("box4");
cbox4.setBounds(5, 0, 61, 34); // Bounds are just for example purposes
contentPane.add(cbox4);
cbox4.setEnabled(false);
基本上,如果单击了框 1 或 2,我只希望框 3 和框 4 可以单击。
我尝试过这个:
if(cbox1.isSelected()||cbox2.isSelected()){
cbox3.setEnabled(true);
cbox4.setEnabled(true);
}
但这不起作用。有人可以帮助解释为什么它不起作用并向我展示一种不同的方法吗?
顺便说一句,我尝试了这个,但也不起作用
JCheckBox cbox4 = new JCheckBox("box4");
cbox4.setBounds(5, 0, 61, 34); // Bounds are just for example purposes
contentPane.add(cbox4);
cbox4.setEnabled(cbox1.isSelected());
提前致谢:)
最佳答案
这是启用或禁用复选框的 super 基本方法。它非常简单,您所需要做的就是声明一个 ActionListener。在 Action 监听器中,您可以启用或禁用每个选择的复选框。就像我说的,这是非常基本的,不考虑二次点击或类似性质的事情。然而,它会从禁用这些框开始,然后根据您的规范启用它们。
public Combos() {
super("ComboBox Example");
setSize(800, 800);
setLocationRelativeTo(null);
add(configureBoxes());
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
boxThree.setEnabled(false);
boxFour.setEnabled(false);
ActionListener al = (ActionEvent e) -> {
if (e.getSource() == boxTwo || e.getSource() == boxOne) {
if (boxThree.isEnabled() && boxFour.isEnabled()) {
boxThree.setEnabled(false);
boxFour.setEnabled(false);
} else {
boxThree.setEnabled(true);
boxFour.setEnabled(true);
}
}
};
boxOne.addActionListener(al);
boxTwo.addActionListener(al);
}
如上所述,您将需要自定义此代码来管理不同的事件,例如取消选择框或选择辅助框,但这应该足以让您继续。
http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html
https://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html
关于Java如何根据另一个复选框是否已被选中来启用和禁用复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33765616/