【问题标题】:Null Pointer Exception when using getText() function with JTextField [duplicate]将 getText() 函数与 JTextField 一起使用时出现空指针异常 [重复]
【发布时间】:2019-06-13 22:19:43
【问题描述】:

我正在为 JTextField 对象创建一个容器类,但每当我尝试获取文本字段中的文本时,我都会遇到麻烦。

class myTextField{
String defaultText;
String currentText = "";
JTextField field;
int xPos;
int yPos;
int xSize;
int ySize;

myTextField(JFrame frame, String newDefaultText, int newXPos, int newYPos, int newXSize, int newYSize){
    defaultText = newDefaultText;
    xPos = newXPos;
    yPos = newYPos;
    xSize = newXSize;
    ySize = newYSize;

    JTextField label = new JTextField(defaultText);
    frame.add(label);
    label.setBounds(xPos, yPos, xSize, ySize);
}

public void setText(String text) {
    this.currentText = field.getText();
    if(text == "") {
        this.currentText = this.defaultText;
    }
    this.currentText = text;
}

public String getText() {
    System.out.println(field.getText());
    this.currentText = field.getText();
    return this.currentText;

    }
}

每当我使用这个类的 getText() 函数时,它都会给我这个错误:

Exception in thread "main" java.lang.NullPointerException
at Examples.myTextField.getText(Example_312.java:182)
at Examples.Example_312.updateFrame(Example_312.java:81)
at Examples.Example_312.main(Example_312.java:49)

不幸的是,该错误的描述性不是很强,因此我很难找出我的代码中出了什么问题。我知道当我调用“field.getText();”时它失败了,但我不知道为什么。如果有人可以向我解释或提供解决方案,我将不胜感激!

【问题讨论】:

    标签: java jframe jtextfield


    【解决方案1】:

    字段JTextField field 从未初始化。在调用this.field 上的任何方法之前,您必须为其分配一个值(尽管label 是一个局部变量,但您为JTextField label 执行了此操作)。

    【讨论】:

      【解决方案2】:

      在您的myTextField 构造函数中,我假设您想要初始化JTextField field; 实例变量,但您创建了一个本地 变量JTextField label = new JTextField(defaultText);

      我认为您应该将构造函数中的 JTextField label = new JTextField(defaultText); 更改为:

       field = new JTextField(defaultText);
       frame.add(field);
       field.setBounds(xPos, yPos, xSize, ySize);
      

      然后,如果你调用 getter getText(),你将不会面对任何 NullPointerException

      【讨论】:

      • 谢谢!这是我凌晨 2 点编程时得到的,我没有注意到这样的事情。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 2014-09-26
      相关资源
      最近更新 更多