1

我已经构建了这个应用程序并尝试运行它,但我无法从JTextField. 我不知道出了什么问题...这是相关的代码...

构造 JTextFeild:(文件 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*/       
   }

从文本字段中获取数据:(文件 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))

那我哪里错了???也没有语法错误等...

4

2 回答 2

3

这里有个问题,

public class Save {
  private javax.swing.JTextField refernce; <---- ISSUE
  ...
  String refernceText = refernce.toString();  
}

Save中的引用字段用初始化null

您必须将类的JTextField对象引用的引用传递ConstructorSave类。

例如,

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();
     .....
    }
  }
}
于 2012-08-25T03:05:55.663 回答
1

看起来您在 Save 类中声明了 JTextField 类型的引用(顺便说一句,这是一个可怕的变量名称),但您从未初始化它。这就是您收到 NullPointerException 的原因。

你在 Constructor 类中新建它。

在构造函数类中新建 JTextField 后,需要将 JTextField 变量作为参数传递给 Save 类的构造函数或 Save 类的方法,并使用它从文本中获取文本场地。

此外,您不想在 JTextField 上调用 toString。toString 不会为您获取文本字段中的数据。你想要getText()。

于 2012-08-25T03:05:45.067 回答