Java 关于初始化 swing 组件的困惑

标签 java swing nullpointerexception

我对初始化 Swing 组件(如 JTextField 和其他组件)感到困惑。从DoSth类调用,getTxtUser返回空指针异常,而如果从它自己的类中调用getTxtUser()则正确返回值。请帮助我。谢谢 代码:

public class GUI{
    private JLabel lblUname;
    private JTextField txtUname;


    public void showGUI(){
       lblUname = new JLabel("Username");
       txtUname = new JTextField(20);
       ....................

    }

    public String getTxtUser(){
    return this.txtUname.getText();
    }

 }

 public class DoSth(){
     .............. 
     GUI g = new GUI();
     String user = g.getTxtUser(); //null pointer Exception even if it has some value
     ...............
 }

最佳答案

txtUname 未在构造函数中初始化,因此调用 DoSth 类中的方法 getTxtUser 会导致 NPE。将 GUI 组件初始化移至构造函数中,或调用 showGUI 方法来初始化它们。

GUI g = new GUI();
g.showGUI();
String user = g.getTxtUser(); 

关于Java 关于初始化 swing 组件的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19761480/

相关文章:

java - WSO2 ESB - 连接取消异常 101507

java - 将 Arraylist 附加到 TextView

java - 关于在 Swing 页面上添加容器的问题

来自数据库的 Java JTable 结果

java - JTree 'DefaultTreeModel.removeNodeFromParent()' 导致 'java.lang.ArrayIndexOutOfBoundsException'

grails - 在根上下文上使NPE失效?

java - 尝试使用 dom4j 解析 XML 时属性值为 null

java - 无法在 JFrame 中使用 drawString() 打印任何字符串

android - 第二次执行surfaceCreated方法时Camera为null

android - 进入后台时应用程序崩溃