如何获取JCheckbox的选定索引?

时间:2012-09-03 12:05:54

标签: java swing

如何从JCheckbox获取所选索引(从使用for循环添加到屏幕的一些jcheckbox)?

// for some t values:
checkBoxes[t] = new JCheckBox("Approve");
checkBoxes[t].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent  e) {
        boolean selected = checkBoxes[t].isSelected();
        System.out.println("Approved"+selected);
    }
});

当我单击复选框时,我想获得所选复选框的索引。

4 个答案:

答案 0 :(得分:4)

你有一个JCheckBox数组,你可以简单地遍历你的数组并找出选择了哪个JCheckBox。

关于:

  

当我单击复选框时,我想获得所选复选框的索引。

编辑:您可以使用传递给ActionListener的ActionEvent的getSource()方法找出选中的复选框。例如,您可以将ActionListener更改为:

checkBoxes[t].addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent  e) {
    boolean selected = checkBoxes[t].isSelected();
    System.out.println("Approved"+selected);

    int index = -1;
    for (int i = 0; i < checkBoxes.length; i++) {
      if (checkBoxes[i] == e.getSource()) {
        index = i;
        // do something with i here
      }
    }
  }
});

答案 1 :(得分:1)

据我了解,您希望获取所选JCheckBox的索引,以便对用户的操作做出适当的响应。

如果是这种情况,您可能需要考虑不同的方法:您可以为每个复选框注册ItemListener

JCheckBox check = new JCheckBox("Approve");
check.addItemListener(new ItemListener() {
  public void itemStateChanged(ItemEvent e) {
    if (check.isSelected()){
      System.out.println(check.getName() + " is selected");
    }
  }
});

(灵感来自java2s.com tutorial

在这种情况下,事件将立即触发,您将始终知道刚刚单击了哪个复选框。

答案 2 :(得分:0)

我会尝试类似的事情:

for (int i=0; i < checkBoxes.length; i++) {
if (checkBoxes[i].isSelected() == true) {
index = i; }
return index; }

从你的问题来看,这就是我收集的你正在寻找的东西。

编辑:

我之前的方法存在缺陷,因为它使得非常天真的方法是选择一个且仅一个框,并且不会取消选择框。

其中'e'是ActionEvent对象,

for (int i=0; i < checkBoxes.length; i++) {
if (checkBoxes[i] == e.getSource()) {
index = i; } }
return index; 

这样就可以识别最近的选择或取消选中复选框。

答案 3 :(得分:0)

遍历复选框并检查isSelected标志