我已经构建了这个应用程序,但我尝试运行它,但是我无法从JTextField
获取数据。我不知道出了什么问题......以下是相关的代码......
构造JTextFeild :( File Main.java)
public class Constructor extends javax.swing.JFrame {
public Constructor() {
initComponents();
}
private void initComponents() {
refernce = new javax.swing.JTextField();
/*Some other code in here*/
}
private javax.swing.JTextField refernce;
/*Some other code in here*/
}
从文本字段中获取数据:( File Save.java)
public class Save {
/*Some other code in here*/
private javax.swing.JTextField refernce;
String refernceText = refernce.toString();
}
错误报告:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Save.<init>(Save.java:79)
at Constructor.saveMouseClicked(Constructor.java:444)
at Constructor.access$200(Constructor.java:15)
at Constructor$3.mouseClicked(Constructor.java:210)
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270)
... (it carry on(ask if you need it))
那我哪里出错了???此外,没有语法错误等...
答案 0 :(得分:3)
这是一个问题,
public class Save {
private javax.swing.JTextField refernce; <---- ISSUE
...
String refernceText = refernce.toString();
}
类中的 引用字段已使用null
进行初始化。
您必须将Constructor
类的 JTextField 对象引用的引用传递给Save
类。
例如,
public class Save {
private javax.swing.JTextField refernce;
public Save(javax.swing.JTextField refernce){
this.refernce=refernce;
}
...
//and use JTextField in your methods
void testMethod() {
if(refernce!=null){
String refernceText = refernce.getText();
.....
}
}
}
答案 1 :(得分:1)
看起来你在类Save中声明了引用(顺便说一下,这是一个变量的可怕名称)类型为JTextField,但是你从未初始化它。这就是你得到NullPointerException的原因。
您在Constructor类中新增了它。
在构造函数类中新建JTextField之后,需要将JTextField变量作为参数传递给Save类的构造函数,或者传递给Save the class的方法,并使用它来获取文本来自文本字段。
此外,您不希望在JTextField上调用toString。 toString将无法获取文本字段中的数据。你想要getText()。