我应该将 JTextField UserDisp 的文本设置为从登录表单检索到的用户名,但出现错误。变量 user 的值来自输入到登录表单中的用户名。
错误显示:“无法从静态上下文引用非静态变量 UserDisp”
代码如下:
public static void main(final String user) {
//look and feel codes are omitted
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
String name = "Welcome "+user+"!";
UserDisp.setText(name);
new MainMenu().setVisible(true);
}
});
}
最佳答案
静态变量在类加载到JVM
时初始化,另一方面,实例变量对于每个实例具有不同的值,并且在使用new(创建对象实例时创建它们) )
运算符或使用像 Class.newInstance()
这样的反射。
因此,如果您尝试在没有任何实例的情况下访问非静态变量,编译器会提示,因为这些变量尚未创建,并且在创建实例并且它们与任何实例关联之前它们不存在。因此,在我看来,在静态上下文中禁止非静态或实例变量的唯一合理原因是实例不存在。
因此,在您的情况下,您需要创建 MainNenu
对象,然后设置用户名文本,然后显示菜单。
例如:
MainMenu menu = new MainMenu();
menu.setUserDispNameText(name);
menu.setVisible(true);
了解更多 here
关于java - 使用另一个 java 文件中的文本设置 JTextField 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24116185/