当从另一个类启动时,Java swing表单不会打开
我是swing新手,我正在尝试用一个表单(HospitalGUI.form)实现一个简单的GUI。当我将关联的Java文件(HospitalGUI.Java)作为main运行时,表单是可见的 我希望能够从我的控制器启动它,以便可以选择GUI或控制台界面。当我的控制器实例化它时,会执行构造函数中的代码,但表单不会打开 要让另一个对象打开窗体,是否需要执行任何特殊或附加操作 我将非常感谢任何帮助理解这一点 我的GUI的主要功能是当从另一个类启动时,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
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()方法中的所有代码来创建框架,并将面板添加到框架中,使框架可见
既然你没有发布所有的代码,我们就猜不出你遗漏了什么
所以实际上你需要改变你的设计。你需要两门课:
可能添加:
hospitalInterface.setVisible(true)但是我们怎样才能真正回答这个问题而不去猜测呢?请让我们防止这种情况发生——给我们一个体面的问题,并请阅读。这是有意义的,尽管我不知道如何从controller类中创建框架并将面板添加到框架中。作为第一次尝试,我尝试将代码从GUI的主界面复制到控制器,并将GUI的面板公开。代码执行得很好,但仍然没有产生任何结果。还是我误解了?你是说除了我目前拥有的HospitalGUI类之外,我还应该拥有一个控制器类和一个创建面板的类吗?从我可以看到,你只有一个类“HospitalGUI”。然后有一个变量rootPanel
,它是这个类的一个实例变量。所以是的,我建议你需要两门课。第一个是“医院专家组”。因此,在main()方法中创建该类的一个实例,并将其添加到所创建的框架中。第二个HospitalGUI只是一个包装类,它创建一个JFrame,然后创建HospitalPanel类的一个实例以添加到框架中。无论你做什么,你都需要1)创建一个JFrame,2)创建你添加到JFrame的面板。谢谢。我本以为我在以前的尝试中已经做到了,但我只是再试了一次,现在成功了。