java - 使用另一个 java 文件中的文本设置 JTextField 的内容

标签 java swing oop authentication jtextfield

我应该将 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/

相关文章:

java - 针对非启动器 Activity 的 Android Intent 过滤器

C#-调用覆盖版本的方法的基本版本

java - 函数使用依赖于两个不同包的对象

C++ 基类::重写虚函数的方法

java - 将泛型列表转换为特定类型时出现 ClassCastException

java - 如何更新 Room 数据库中的现有行?

java - 如何过滤以编程方式生成的事件?

Java 动态 Jtable

java - 将 jTable 中的数据插入数据库

java - Java中的动态文本框