java - 将 getText() 函数与 JTextField 一起使用时出现空指针异常
问题描述
我正在为 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();”时它失败了,但我不知道为什么。如果有人可以向我解释或提供解决方案,我将不胜感激!
解决方案
在您的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
.
推荐阅读
- javascript - 向字段添加数据,仅发送后者
- maven - GitHub Action CI - 下载并设置 JDK
- spring-boot - 为从 SCDF 启动的批处理作业创建的 PODS 的 ConfigMap
- node.js - 在 1 列中按星期几查询 Sequelize 表,在另一列中按布尔值查询
- python - BeautifulSoup 不适用于 curl 输出
- chronicle-map - Chronicle Map vs 市场数据分销商,
- javascript - 如何通过单击 html 中的按钮来运行节点 js 文件(进行 api 调用并将数据放入工作表中)
- vb.net - 如何使用 Swagger REST API 将枚举完全反映到客户端代码
- ansible - Ansible 循环控制和 with_together 循环
- c# - EF核心无法创建表,sql语法错误