在单个程序中制作多个帧

时间:2013-07-15 13:00:40

标签: java swing jframe multiple-instances

我总是想知道如何制作一个包含多个JFrame的程序。我的意思是我只想要一个类来处理所有的GUI和东西,但我怎么能有效地做到这一点?很多教程都说我们通过继承JFrame来制作JFrame。但如果我想要很多帧呢?

例: 具有一些选项的一帧中的应用标题 菜单是一帧 主要工作应用是一个框架 就像在游戏中一样。

但我不确定我是否与JPanel有关?我对2完全感到困惑。我只想要一个不移动的框架,但基本上框架的内容正在发生变化。 例如,当我点击START时,它将变为框架的游戏风格。

4 个答案:

答案 0 :(得分:9)

您正在寻找JFrame CardLayout。一些背景:

JFrame 是物理窗口。它带有一个标题栏和三个按钮:最小化,最大化和关闭。把它想象成一个相框。

JPanel 是各种各样的“内容持有者”。通常,您将其他组件(按钮,动画,等等)放在JPanel上,然后将该JPanel打到JFrame中。使用我们的相框示例,JPanel将是您放在相框中的照片纸。其他组件将是图片本身的实际内容,最后你得到的是一张很好的图片......或者在你的情况下,是一个应用程序。

将JFrame设置为使用CardLayout本质上可以让您同时在同一个JFrame中拥有多个JPanel,同时仍然只显示一个。因此,对于您的应用程序,您将拥有(至少)两个JPanel:一个用于菜单,一个用于游戏。当应用程序启动时,您将显示MenuPanel。当用户单击“开始”时,您切换到GamePanel。 MenuPanel将被置于后台,并且在您再次将其调用到前台之前将无法访问。

另一方面,如果您创建多个JFrame,您将拥有两个或多个物理上独立的窗口,可以单独处理。这对游戏开发来说实际上很酷。虽然为第二个窗口构建和链接GUI需要更多时间,但您可以让该窗口实时影响游戏设置(射击速度,子弹强度,玩家速度等)。

答案 1 :(得分:1)

我认为你所追求的是Card Layout

  

CardLayout对象是容器的布局管理器。它对待   容器中的每个组件都作为卡片。只有一张卡片可见   一段时间,容器充当一堆卡片。首先   添加到CardLayout对象的组件是可见组件   首先显示容器。

您可以看到它的使用方式here

此布局管理器允许您管理需要在各种功能中共享框架的情况。例如,在您的情况下,您可以具有处理游戏的设置部分的功能,以及另一个处理实际游戏本身的功能。

然后,您可以使用经理在这些特定项目之间切换。

答案 2 :(得分:0)

您还可以将Desktopane()和InternalFrame()用于多个框架。 内部框架与Jframe非常相似,但每次都需要setVisible(true)或show()。

答案 3 :(得分:0)

您正在使用哪种IDE,您可以在同一个包中创建多个JFrame,并为每个JFrame分别创建代码。

如果要链接每个帧,则必须从每个JFrame创建实例。例如,如果按下按钮,我们需要调用一个新的框架(我们已经创建)

NewJFrame1 frame1=new NewJFrame1();

frame1.setVisible(true);

然后您可以决定使用当前的JFrame。 例如:(隐藏,关闭)