如何将JTextField输入存入String变量?解决空指针异常
解决JTextField空指针异常问题
错误提示Cannot invoke "javax.swing.JTextField.getText()" because "this.this$0.textfield" is null的核心原因是:你类中声明的私有成员textfield从未被初始化,而你在drawWindow()方法里创建的是局部变量t1,这和类成员textfield是完全独立的两个变量,导致监听器里调用textfield.getText()时,这个类成员还是null。
修正方案很简单,直接给类成员赋值,而不是创建新的局部变量:
public class Window { private JButton confirm; private JTextField textfield; private JLabel label; public void drawWindow() { JFrame window = new JFrame("CountryQuiz"); ClickChecker click = new ClickChecker(); JPanel panel = new JPanel(); panel.setBounds(40, 80, 200, 200); panel.setBackground(Color.green); // 直接给类成员textfield赋值,不再创建局部变量t1 textfield = new JTextField("Enter country..."); textfield.setBounds(50, 100, 200, 30); window.add(textfield); // 同理,给类成员confirm赋值,不再声明局部变量 confirm = new JButton("Confirm"); confirm.setBounds(50, 50, 95, 30); confirm.addActionListener(click); window.add(confirm); window.setSize(400, 400); window.setLayout(null); window.setVisible(true); window.add(panel); } private class ClickChecker implements ActionListener { public void actionPerformed(ActionEvent e) { String answer = textfield.getText(); System.out.println(answer); } } }
修改点说明:
- 删除局部变量
t1,直接实例化类成员textfield - 删除局部变量
confirm,直接实例化类成员confirm - 监听器中访问的
textfield现在是已经初始化过的类成员,不会再出现空指针异常
内容的提问来源于stack exchange,提问作者Mr. Star
相关产品推荐
相关产品推荐

