我正在尝试将一个项侦听器添加到一个复选框,以查看它是否已被选中,如果是,则将其添加到要选择的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]);
}
答案 0 :(得分:1)
使用getSource
ItemEvent
方法获取活动来源
public void itemStateChanged(ItemEvent e) {
JCheckBox checkBox = (JCheckBox)e.getSource();
if ( checkBox.isSelected() ){
//do something
}
}
为了供将来参考,请阅读以下内容,了解有关发布有关堆栈溢出问题的代码示例的提示:https://stackoverflow.com/help/mcve