Swing中遇到的final有关问题

Swing中遇到的final问题Java codefinal JTextField jtf new JTextField(20)JButton jbutton_ok new J

Swing中遇到的final问题

Java code
                  final JTextField jtf = new JTextField(20);        JButton jbutton_ok = new JButton("ok!");        JButton jbutton_no = new JButton("no!");        jbutton_ok.addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent e) {                if(e.getActionCommand().equals("ok!")){                    System.out.println(jtf.getText());//不加final这里会报错                }            }        });


在第一行代码之中,如果我不加上final编译时就会报错,求解为何

[解决办法]
规定。内部类访问局部变量只有其是final的时候才能访问
[解决办法]
你可以在方法外先创建一个JTextField
Java code
JButton jbutton_ok = new JButton("ok!");        JButton jbutton_no = new JButton("no!");        jbutton_ok.addActionListener(new ActionListener(){            @Override            public void actionPerformed(ActionEvent e) {                if(e.getActionCommand().equals("ok!")){                    System.out.println(jtf.getText());//不加final这里会报错                }            }        });//所有方法外private javax.swing.JTextField jtf = new javax.swing.JTextField(20);