|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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?
求解,谢谢。 |
|