马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
public class JCheckBoxTest extends JFrame{
public JCheckBoxTest(){
Container container = getContentPane();
setLayout(new BorderLayout());
JTextArea ta =new JTextArea(4, 20); //为什么这里非得是final
JScrollPane sp = new JScrollPane(ta);
container.add(sp, BorderLayout.NORTH); //sp添加到container中,并放北方
JCheckBox cb1 = new JCheckBox("1");
JCheckBox cb2 = new JCheckBox("2");
JPanel pn = new JPanel(new FlowLayout(0, 5, 5)); //创建一个JPanel面板
pn.add(cb1); //cb1和cb2添加到pn面板中
pn.add(cb2);
container.add(pn);
cb1.addActionListener(new ActionListener(){ //cb1监听事件
public void actionPerformed(ActionEvent e){
ta.append("1被选中\n"); //这里调用非final得ta报错
}
});
cb2.addActionListener(new ActionListener(){ //cb2监听事件
public void actionPerformed(ActionEvent e){
ta.append("2被选中\n");
}
});
setSize(300, 300);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new JCheckBoxTest();
}
}
如代码所示,在内部类中调用外部类的文本组件时报错,要求ta必须是final,这是为什么,内部类不是可以使用外部类的变量吗,为什么非得是final?
求解,谢谢。 |