尝试将项侦听器添加到JCheckBox对象

时间:2016-06-27 17:14:53

标签: java swing jcheckbox itemlistener

我正在尝试将一个项侦听器添加到一个复选框,以查看它是否已被选中,如果是,则将其添加到要选择的SQL表名列表中。相反,如果未选中,则将其从列表中删除。我无法在任何复选框中添加一个监听器,因为"它们并不是最终的#34;。我能做什么/有更好的方法来攻击它吗?

我的方法:

public JPanel drawChecks(){

 ArrayList<String> list = MainFrame.grabSQLTableNames();   
 int index = list.size();
 int rows = 1;
 while(index > 1){
 rows++;
 index = index - 3;   
 }

GridLayout c = new GridLayout(rows, 3);
JPanel panel = new JPanel(c);
JCheckBox check[] = new JCheckBox[list.size()];

for(int x = 0; x < list.size(); x++){

 check[x] = new JCheckBox(list.get(x));
 check[x].setVisible(true);
 check[x].addItemListener(new ItemListener() {
  public void itemStateChanged(ItemEvent e) {
    if (check[x].getState == true){

        //do something

       }
     }
    });
 panel.add(check[x]);
}

1 个答案:

答案 0 :(得分:1)

使用getSource

ItemEvent方法获取活动来源
public void itemStateChanged(ItemEvent e) {
    JCheckBox checkBox = (JCheckBox)e.getSource();
    if ( checkBox.isSelected() ){
        //do something
    }
}

为了供将来参考,请阅读以下内容,了解有关发布有关堆栈溢出问题的代码示例的提示:https://stackoverflow.com/help/mcve