JTextField无法输出,调用getText()触发NullPointerException问题求助
解决JTextField空指针异常问题
错误原因
你在类中声明了textField1、textField2、textField3作为成员变量,但在构造函数里创建文本框时,又重新用JTextField前缀定义了同名局部变量(比如JTextField textField1 = new JTextField();)。这会导致类的成员变量始终未被初始化,一直处于null状态,所以在按钮点击事件里调用getText()时触发了空指针异常。
另外还有个隐藏问题:你定义的数组newArr长度为2(int[] newArr = new int[2];),但后续尝试给newArr[2]赋值,这会触发数组下标越界异常,需要把数组长度改成3。
修正后的代码
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JFrame; import java.awt.FlowLayout; import java.awt.*; import javax.swing.*; public class Frame extends JFrame implements ActionListener { JTextField textField1; JTextField textField2; JTextField textField3; JButton button; int[] newArr = new int[3]; // 修正数组长度为3 int num1, num2, num3; Frame() { this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLayout(new FlowLayout()); this.setPreferredSize(new Dimension(500,100)); // 去掉JTextField前缀,直接给类成员变量赋值 textField1 = new JTextField(); textField1.setPreferredSize(new Dimension(40,40)); this.add(textField1); textField2 = new JTextField(); textField2.setPreferredSize(new Dimension(40,40)); this.add(textField2); textField3 = new JTextField(); textField3.setPreferredSize(new Dimension(40,40)); this.add(textField3); button = new JButton("Submit Guess"); button.addActionListener(this); this.add(button); this.pack(); this.setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button) { newArr[0] = Integer.parseInt(textField1.getText()); newArr[1] = Integer.parseInt(textField2.getText()); newArr[2] = Integer.parseInt(textField3.getText()); System.out.println(newArr[0] + newArr[1] + newArr[2]); } } }
内容的提问来源于stack exchange,提问作者BrokenFloppyDisc
相关产品推荐
相关产品推荐

