将 getText() 函数与 JTextField 一起使用时出现空指针异常
Null Pointer Exception when using getText() function with JTextField
我正在为 JTextField 对象创建一个容器 class,但每当我尝试在文本字段中获取文本时,我都会 运行 遇到麻烦。
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;
}
}
每当我使用这个 class 的 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();" 时失败了,但我不知道为什么。如果有人可以向我解释或提供解决方案,我将不胜感激!
字段 JTextField field
从未初始化。在调用任何方法之前,您必须为 this.field
赋值(尽管 label
是一个局部变量,但您为 JTextField label
这样做了)。
在你的 myTextField
构造函数中我假设你想初始化 JTextField field;
实例变量但是你创建了一个 local变量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
.
我正在为 JTextField 对象创建一个容器 class,但每当我尝试在文本字段中获取文本时,我都会 运行 遇到麻烦。
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;
}
}
每当我使用这个 class 的 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();" 时失败了,但我不知道为什么。如果有人可以向我解释或提供解决方案,我将不胜感激!
字段 JTextField field
从未初始化。在调用任何方法之前,您必须为 this.field
赋值(尽管 label
是一个局部变量,但您为 JTextField label
这样做了)。
在你的 myTextField
构造函数中我假设你想初始化 JTextField field;
实例变量但是你创建了一个 local变量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
.