Java 如何检查复选框是否被选中

9

我使用:

    CheckboxGroup cg = new CheckboxGroup();
    Checkbox c1 = new Checkbox("A", false, cg);
    Checkbox c2 = new Checkbox("B", false, cg);
    Checkbox c3 = new Checkbox("C", true, cg);

创建一个由三个复选框组成的组。现在,我想检查其中哪一个被选中了。我使用以下代码:

if (c1.isSelected()) { }

但这会导致The method isSelected() is undefined for the type Checkbox错误... 推荐的解决方案是向c1添加转换,我这样做了,结果出现了Cannot cast from Checkbox to AbstractButton错误... 那么,如何只检查复选框是否被选中呢?


CheckboxGroup#getSelectedCheckbox()有什么问题吗? - Alexis C.
1
如果选项是互斥的,那么单选按钮似乎比复选框更合适。单选按钮 - khelwood
6个回答

8

使用 getState()

boolean checked = c1.getState();
if(c1.getState()) {
  //c1 is checked
} else if (c2.getState()) {
  //
}

或者

Checkbox cb = cg.getSelectedCheckbox();
if(null != cb) {
  //not checked
} else {
  System.out.println(cb.getLabel() + " is checked");
}

1

首先,java.awt.Checkbox在其父类java.awt.Component中没有.isSelected()方法。

https://docs.oracle.com/javase/7/docs/api/java/awt/Checkbox.html

请检查上面的链接以查看从java.awt.Component类继承的方法。
如果您使用javax.swing.JComponent中的JCheckBox,则可以使用第二个.isSelected()方法;但不适用于AWT的CheckBox...
请查看下面的链接...您可以找到继承自javax.swing.AbstractButton的.isSelected()方法。

https://docs.oracle.com/javase/7/docs/api/javax/swing/JCheckBox.html


1

1

我发现isChecked()方法是最好的选择。

 // Check to see if box is checked
 if (c1.isChecked()) {
      // Your code if the box is checked
 } else {
      // Your code if the box is not checked
 }

0

从你使用 isSelected 的情况来看,我得出了以下两个错误之一:

  1. 如果你想使用复选框,则应该使用 c1.getState() 而不是 isSelected()
  2. 如果你需要的是单选框而不是复选框,则可以使用 isSelected() 方法。在这里查看有关这两者的信息

-1

你可以尝试这段代码

// check is ckeck box id
if (check.isSelected()) {
           // your code for checked;
 } else {
           // our code for not checked;
 }

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