当添加新的类扩展JFrame(或java.awt.Frame)时,类被添加到main()方法中,如下所示:
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewFrame5().setVisible(true);
}
});
}
每个JFrame类都有自己的main方法,我猜所有的类都是同时启动的。
如何添加没有main方法的框架?
首先,请参阅使用多个jframe,好/坏实践?一般来说,建议不要这样做。关于其他可能性(例如JDialog),请参阅接受的答案
至于您主要关心的问题,没有办法绕过netbeans为顶级容器(如JFrame和JDialog)创建主方法。在JFrame的情况下,逻辑似乎是正确的,因为应用程序应该只有一个JFrame作为应用程序的主要顶层容器,但我不确定JDialog
背后的逻辑是否具有main
方法(因为对话框通常与主JFrame运行在同一个JVM中)。我能想到的唯一一件事是,如果您想在独立模式下测试对话框,JDialog是用main
创建的,用于开发目的。但是最终,如果您选择使用JDialog的main
方法,则应该删除它。
回到关于多个jframe的第一点,我可能会推荐其他选项
-
使用JDialog。是的,当进入生产环境时,你必须删除
main
方法,因为对话框将在主JVM的上下文中实例化,通常不应该运行自己的进程。 -
另一个选择,取决于您的需求是使用
Cardlayout
,它将允许您在视图/面板之间切换(您可以在netbeans中创建JPanel表单)。请参阅如何在Netbeans GUI Builder中使用CardLayout以获得工作指南。以及官方的如何使用CardLayout教程
顺便说一句,如果你是一个初学者,我强烈建议你把构建器工具放在一边,先学习手工编写代码。可能有很多教程教你如何使用构建器工具,但它们可能会错过swing架构和swing中的重要概念。在我看来,这将极大地影响你对构建器如何以及为什么工作的理解,在调试时引起很多头痛。继续使用JFC/Swing创建GUI,官方教程很方便,请仔细阅读。