当从另一个类启动时,Java swing表单不会打开

当从另一个类启动时,Java swing表单不会打开,java,swing,user-interface,Java,Swing,User Interface,我是swing新手,我正在尝试用一个表单(HospitalGUI.form)实现一个简单的GUI。当我将关联的Java文件(HospitalGUI.Java)作为main运行时,表单是可见的 我希望能够从我的控制器启动它,以便可以选择GUI或控制台界面。当我的控制器实例化它时,会执行构造函数中的代码,但表单不会打开 要让另一个对象打开窗体,是否需要执行任何特殊或附加操作 我将非常感谢任何帮助理解这一点 我的GUI的主要功能是 public static void main(String[] ar

我是swing新手,我正在尝试用一个表单(HospitalGUI.form)实现一个简单的GUI。当我将关联的Java文件(HospitalGUI.Java)作为main运行时,表单是可见的

我希望能够从我的控制器启动它,以便可以选择GUI或控制台界面。当我的控制器实例化它时,会执行构造函数中的代码,但表单不会打开

要让另一个对象打开窗体,是否需要执行任何特殊或附加操作

我将非常感谢任何帮助理解这一点

我的GUI的主要功能是

public static void main(String[] args) {

    final int FRAME_WIDTH = 300;
    final int FRAME_HEIGHT = 400;

    JFrame frame = new JFrame("Hospital System");
    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
    frame.setContentPane(new HospitalGUI().rootPanel);
    frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    frame.pack();
    frame.setLocationRelativeTo(null);
    frame.setVisible(true);
}
控制器中的调用是

HospitalGUI hospitalInterface = new HospitalGUI();
当我将关联的Java文件(HospitalGUI.Java)作为main运行时,表单是可见的

这是因为main()方法创建HospitalGUI类和面板框架。然后将面板添加到框架中,并使框架可见

控制器中的调用是

HospitalGUI hospitalInterface = new HospitalGUI();
当您只使用上面的语句时,这意味着类的构造函数仍然需要调用main()方法中的所有代码来创建框架,并将面板添加到框架中,使框架可见

既然你没有发布所有的代码,我们就猜不出你遗漏了什么

所以实际上你需要改变你的设计。你需要两门课:

  • 一个类,用于创建要添加到框架中的面板。因此,可以将面板添加到main()方法中创建的框架中
  • 控制器类。此类将负责创建框架并将面板添加到框架中

  • 可能添加:
    hospitalInterface.setVisible(true)rootPanel
    ,它是这个类的一个实例变量。所以是的,我建议你需要两门课。第一个是“医院专家组”。因此,在main()方法中创建该类的一个实例,并将其添加到所创建的框架中。第二个HospitalGUI只是一个包装类,它创建一个JFrame,然后创建HospitalPanel类的一个实例以添加到框架中。无论你做什么,你都需要1)创建一个JFrame,2)创建你添加到JFrame的面板。谢谢。我本以为我在以前的尝试中已经做到了,但我只是再试了一次,现在成功了。