我创建登录表单,当按下按钮时,我希望将输入的名称传递给另一个类。
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);
}
答案 0 :(得分:1)
在main()
设置值之前调用get_name
方法,这就是您获得null
的原因。如果您调试应用程序(或只是移动print
),get_name
被调用后null
的机会将不会okButtonActionPerformed()
。
使用公共变量也不是一个好习惯,您应该将它们设置为私有,并使用getters
和setters
来访问它们。 Here列出了这样做的充分理由。
答案 1 :(得分:0)
action 侦听器在运行时采取动作,但静态变量和方法将在编译时获取其值,因此您可以定义 textfield(s)到一些默认值。
见这个例子:
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
在编译后获得文本字段的值(在运行时),但是在编译时它被设置为{{1}所以输出将是
空
您可能在访问某些类字段时遇到问题,请参阅此示例:
null
另请参阅this tutorial和this 也是StackOverFlow回答的好文章。