Java中取消勾选复选框

7
在我的程序中,我希望在调用此方法时取消所有复选框的选择。可是为什么它不起作用呢?每当我调用此方法时,复选框仍然被选中。
private void nextQuestionButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                   

     clearOptions();

}    

public void clearOptions ()   
{ 
    //Make sure the check boxes are not checked
    optionA.setSelected(false);
    optionB.setSelected(false);
    optionC.setSelected(false);
    optionD.setSelected(false);  
}

3
展示你的完整代码。 - Vishal K
@JeanWaghetti 我对此还很陌生,但我认为你所说的可编译指的是能在计算机上运行的东西。我会将4个复选框和一个按钮添加到UI中,并在按钮事件中调用clearOptions()方法。 - user2175095
首先你说“取消选中所有文本框”,然后你又说“复选框仍然保持选中状态”,最后在代码的注释中你又说“确保单选按钮未被选中”。那到底是怎样的呢?你提到了三个不同的组件(虽然我还不知道“文本框”是什么)。如果你想要帮助,请花时间提出一个明确定义和清晰的问题。 - camickr
我只需要在用户界面(UI)中添加4个复选框和在jFrame中添加一个按钮,并在按钮事件中调用clearOptions()方法。请确保提供已编写的代码,我们没有时间为您编写代码,这叫做“SSCCE”。如果您不知道这个术语,请搜索网络。 - camickr
@camickr 不好意思,我打了一些愚蠢的错字。这样可以吗? - user2175095
显示剩余11条评论
5个回答

11

首先,您需要将所有复选框代码放在顶部,例如状态更改方法中。然后,要取消复选框的选择,您可以创建一个名为state的变量,并将变量值设置为false,之后您可以调用checkbox.setSelected(false);boolean state = false; CheckBox.setSelected(state);就这样!!!


1
最简单的方法是将相同的按钮组应用于所有复选框。然后只需使用以下代码:
buttonGroup1.clearSelection();

在尝试了几乎所有的方法之后,这种方法是迄今为止最简单、最高效的一种。


0

如果你确定复选框已被选中,你可以切换它。

checkbox.toggle();

0

我尝试使用此方法来处理带有null参数的复选框组:

checkboxGroup1.setSelectedCheckbox(null);

-1

1
-1,Swing会在组件的属性更改时自动重绘组件。调用setSelected(...)方法将导致组件重新绘制自身。无需进行validate()。这可能是旧的AWT要求,但在Swing中不需要。 - camickr
@PeterMmm,我有没有其他方法可以取消复选框的选择? - user2175095
我有一个反例。在JDialog中的Box中使用JCheckBoxes,并调用setSelected方法,有时会进入不正确绘制的状态(复选框状态正确,但绘制错误),直到我添加了一个ItemListener来在对话框上调用repaint。这样就解决了。假设我找到时间,我会发布并链接到一个包含SSCCE的问题,以进行进一步分析。 - Joshua Goldberg
1
@JoshuaGoldberg,如果您在非事件派发线程中调用cb.setSelected(state)可能会出现此情况。这样的修改(像Swing组件上的所有操作)应该仅在事件派发线程上执行。 - Marco13
@Marco13 回顾那段代码,我几乎可以确定那就是问题所在,感谢你的评论。 - Joshua Goldberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接