为 JAVA/SWING 应用程序创建一个主窗口

Make a mainWindow for JAVA/SWING application

当我开始开发我的应用程序时,我只是开发了单独的 JFrame 框架并一个一个地测试它们。现在,我想为我的应用程序制作一个主 window。我读了很多书,但直到现在,我很难在 java 中做到这一点并摇摆不定。我通过创建一个 main window 作为 JFrame 的实例来尝试此操作,但出现错误,显示我无法在另一个 JFrame 中显示 JFrame。

public class MainWindow extends JFrame{
private JFrame frame1;
private JFrame frame2;


public MainWindow(){

frame1 = new JFrame();
frame2 = new JFrame();

setLayout(new BorderLayout());

add(frame1,BorderLayout.CENTER);
add(frame2,BorderLayout.NORTH);

pack(); 

}

}

一个JFrame是一个window。

你不能把 window 放在 window 里面。

您可能正在寻找 JPanelJPanel 是其他组件(可以包含更多 JPanel)的相当简单的容器。您可以将 JPanel 添加到 JFrame

有不同的方法来处理这个问题
首先,您不能像您注意到的那样在 JFrame 内部使用 Jframe,因此请使用 JPanel

panel = new JPanel();

add(panel,BorderLayout.Center);

JPanel 是另一个容器,您可以在其中装入大量 swing 组件。

如果您想打开一个新的 Window 制作另一个 JFrame 并使其可见。请注意,您不能使用 add 方法将它添加到您的 Jframe 中。但您可以将它保存在一个变量中,并处理您在同一 class.
的另一帧中看到的内容 如果你想要一个主窗口,请将此代码添加到主窗口中:

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

这使得如果您关闭主框架,应用程序将结束(在其他框架中,您通常不应该执行此操作)

这就是为什么通常不鼓励直接从像 JFrame 这样的顶级容器扩展的原因之一,它们将您锁定在一次使用中。

您不能将基于 window 的组件添加到其他容器中。您必须将每个当前帧分隔到一个更基本的容器中,例如 JPanel,然后才能将它们添加到另一个 window.

您可以考虑使用 CardLayoutJTabbedPane 甚至 JDesktopPane 或其他布局管理器来根据您的需要向用户提供您的个人视图。

见...

更多想法