从另一个类启动时,Java Swing表单无法打开

时间:2018-06-23 02:18:32

标签: java swing user-interface

我是新手,我正在尝试用一种形式(HospitalGUI.form)实现一个简单的GUI。当我主要运行关联的Java文件(HospitalGUI.java)时,该窗体可见。

我希望能够从控制器启动它,以便可以选择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();

1 个答案:

答案 0 :(得分:1)

  

当我运行关联的Java文件(HospitalGUI.java)作为主文件时,该窗体可见。

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

  

并且控制器中的呼叫为

HospitalGUI hospitalInterface = new HospitalGUI();

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

由于您没有发布所有代码,所以我们无法猜测您丢失了什么。

因此,实际上您需要更改设计。您需要两个类:

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