0

当我开始开发我的应用程序时,我只是开发了 Seprate JFrame 框架并一一测试它们。现在,我想为我的应用程序创建一个主窗口。我读了很多,但直到现在,我很难在 java 和 swing 中做到这一点。我通过创建一个主窗口作为 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(); 

}

}
4

3 回答 3

1

AJFrame是一个窗口。

你不能把窗户放在窗户里面。

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

于 2015-01-10T09:50:24.047 回答
1

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

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

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

看...

更多想法

于 2015-01-10T10:02:52.407 回答
0

有不同的方法来处理这个
首先你不能像你注意到的那样在 JFrame 内部使用 Jframe 所以改为使用JPanel

panel = new JPanel();

add(panel,BorderLayout.Center);

JPanel 是另一个容器,您可以在其中打包许多摆动组件。

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

frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

这使得如果你关闭你的主框架,应用程序将结束(在其他框架中你不应该正常实现)

于 2015-01-10T09:55:34.360 回答