0

我创建登录表单,当按下按钮时,我想将输入的名称传递给另一个类。

private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {                                         

    get_name = this.nameField.getText();
    get_pass = this.passwordField.getText();

}

在另一个类中,这打印 null,

public static void main(String[] args) {
    LoginFrame logframe = new LoginFrame();
    System.out.println(logframe.get_name);
}
4

2 回答 2

1

main()之前调用的方法get_name有一个值集,这就是你得到null. 如果您调试应用程序(或只是移动print),则get_name不会nullokButtonActionPerformed()被调用之后。

拥有公共变量也不是一个好习惯,您应该将它们设置为私有并使用getterssetters访问它们。这里列出了这样做的充分理由。

于 2013-05-13T21:01:52.583 回答
0

动作侦听器在运行时执行它的动作,但静态变量和方法将在编译时获取它们的值,因此您可以将文本字段定义为一些默认值。
看这个例子:

private static int a ;
public static void test(){
 a = 3;
System.out.println(a);
a=5; 
System.out.println(a);
}

您可能猜测输出将是(3 然后 5),但实际上静态变量将采用激光值是不正确的,因此输出将是

5
5

这就是为什么他们创建动态,因为它的值会在运行时发生变化,就像你okButtonActionPerformed在编译后(在运行时)获取文本字段的值一样,但是在编译时它被设置为null所以输出将是

无效的

您可能在访问某些类字段时遇到问题,请参阅此示例:

class Fruit{
 private String type;

 public String getType(){
       return this.type;
 }

 public void setType(String type){
       this.type = type;
}
}

public class Main{
//default constructor 
 public Main(){
 Fruitobj = new Fruit();
 obj.setType("Apple");
 System.out.println(obj.getType());
}
}

另请参阅本教程也是 StackOverFlow 回答的一篇好文章。

于 2013-05-13T21:03:13.840 回答