【问题标题】:uncheck checkboxes in java在java中取消选中复选框
【发布时间】:2013-03-25 16:17:29
【问题描述】:

在我的程序中,每当调用此方法时,我都想取消选中所有复选框。有人可以解释为什么它不起作用吗?每当我调用此方法时,复选框仍处于选中状态。

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);  
}

【问题讨论】:

  • 我认为“checked”是属性,因此您需要将其设置为 optionC.Checked = false;但不确定
  • 显示你的完整代码..
  • 提供可重现您的问题的可编译示例。
  • 如果您已经注册了一些ListenerJCeckBoxes 也显示相关操作..
  • @JeanWaghetti 我对此很陌生,但我认为可编译的意思是您可以在您的计算机上运行的东西。嗯,我只需在 UI 中添加 4 个复选框,在 jFrame 中添加一个按钮,并在按钮发生时调用 clearOptions() 方法

标签: java jcheckbox


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    执行此操作的最简单方法是将相同的按钮组应用于所有复选框。然后只需使用:

    buttonGroup1.clearSelection();
    

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

    【讨论】:

      【解决方案3】:

      如果你确定checkbox 被选中,你可以切换它。

      checkbox.toggle();
      

      【讨论】:

        【解决方案4】:

        我尝试对带有空参数的复选框组使用此方法:

        checkboxGroup1.setSelectedCheckbox(null);
        

        【讨论】:

          【解决方案5】:

          一般来说,在 Swing 中,后端所做的任何更改都不会传播到可视元素。一个众所周知的例外是JTextField.setText()(任何对 setText 的调用都会立即更新可视文本元素)。

          它甚至记录在 API 文档中:http://docs.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#setSelected(boolean)

          您可以保留您的代码,但您必须(中)验证容器。

          【讨论】:

          • -1,当组件的属性发生变化时,Swing 会自动重新绘制组件。调用 setSelected(...) 方法将导致组件重新绘制自身。不需要验证()。这可能是旧的 AWT 要求,但 Swing 不需要它。
          • @PeterMmm 是否有另一种方法可以取消选中复选框?
          • 我有一个反例。 JDialog 中的 Box 中的 JCheckBoxes,调用 setSelected。它有时会进入不正确的绘制状态(复选框状态是正确的,但绘制错误),直到我在对话框上添加了一个调用 repaint 的 ItemListener。那解决了它。假设我有时间我会在这里发布并链接到一个带有 SSCCE 的问题以供进一步分析。
          • @JoshuaGoldberg 如果您从不是 事件调度线程的线程调用cb.setSelected(state),则可能会发生这种情况。这样的修改(就像 Swing 组件上的所有操作一样)应该Event Dispatch Thread 上完成。
          • @Marco13 回头看看那段代码,我几乎可以肯定这是问题所在,感谢您的评论。
          【解决方案6】:
           public void clearOptions ()   
          { 
                      checkbox1.setState(false); 
                       checkbox2.setState(false);
                       checkbox3.setState(false);
                       checkbox4.setState(false);
          }
          

          【讨论】:

          • 为什么这样可以解决问题?它与 OP 发布的内容相同。
          猜你喜欢
          • 2019-01-28
          • 1970-01-01
          • 2013-09-29
          • 2013-11-04
          • 1970-01-01
          • 1970-01-01
          • 2014-11-03
          相关资源
          最近更新 更多