java向JCheckBox的ArrayList添加ItemListeners
我对ItemListeners有问题。基本上,我想查询数据库以获得一些数据,并按照DAO模式将它们放入对象中。问题是,当我把ArrayList
放在CheakBoxes
中时,我不知道如何向它们添加侦听器
在通过循环将它们放入容器之前,我尝试添加ItemListener
。我还尝试在将ItemListeners添加到容器后添加它们,但也没有效果
我只测试了1个chekBox的脚本,效果很好。说到ArrayList,我有一条错误消息:无法引用在封闭范围中定义的非最终局部变量jCheckBox
下面的代码是另一个测试,只是为了看看我的程序是否有错误,但在将侦听器添加到ArrayList对象时,它似乎给了我同样的问题
package test;
import java.awt.Dimension;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.ArrayList;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Test {
private static ArrayList<JCheckBox> jCheckBoxs;
private static JFrame jFrame=new JFrame();
public static void main(String[] args) {
init();
}
private static void init() {
jFrame.setSize(new Dimension(400,400));
jFrame.setTitle("test");
JPanel jp=new JPanel();
jCheckBoxs=new ArrayList<JCheckBox>();
addArray("A");
addArray("B");
addArray("C");
jp.add(jCheckBoxs.get(0));
jp.add(jCheckBoxs.get(1));
jp.add(jCheckBoxs.get(2));
jFrame.getContentPane().add(jp);
jFrame.setVisible(true);
}
private static void addArray(String msg) {
JCheckBox jCheckBox=new JCheckBox();
jCheckBox.setText(msg);
jCheckBox.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
System.out.println(jCheckBox.getName());
}
});
}
}
# 1 楼答案
final
例如: