Java - 无法从文本字段获取数据

时间:2012-08-25 02:59:09

标签: java string swing jframe jtextfield

我已经构建了这个应用程序,但我尝试运行它,但是我无法从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))

那我哪里出错了???此外,没有语法错误等...

2 个答案:

答案 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()。