为 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 里面。
您可能正在寻找 JPanel
。 JPanel
是其他组件(可以包含更多 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.
您可以考虑使用 CardLayout
或 JTabbedPane
甚至 JDesktopPane
或其他布局管理器来根据您的需要向用户提供您的个人视图。
见...
- How to Use CardLayout
- How to Use Tabbed Panes
- How to Use Internal Frames
- Laying Out Components Within a Container
更多想法
当我开始开发我的应用程序时,我只是开发了单独的 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 里面。
您可能正在寻找 JPanel
。 JPanel
是其他组件(可以包含更多 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.
您可以考虑使用 CardLayout
或 JTabbedPane
甚至 JDesktopPane
或其他布局管理器来根据您的需要向用户提供您的个人视图。
见...
- How to Use CardLayout
- How to Use Tabbed Panes
- How to Use Internal Frames
- Laying Out Components Within a Container
更多想法