You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 06:35:19