1

我正在为街机游戏创建 GUI。它由一个 JFrame 和一些 JPanel 和一个 JMenu 组成,如图所示:

在此处输入图像描述

我一直在尝试使用 BorderLayout,但它没有正确显示面板。我得到的是 JMenu 正确显示。[1] 调整其宽度以包含其中的按钮。JPanel [2] 几乎完成了屏幕的其余部分。并且 [3] 在末尾显示为一条细线。

这是我用来放置它们的代码片段:

    add(new TopMenu(), BorderLayout.PAGE_START);    // JMenu
    add(new LeftPanel(), BorderLayout.WEST);        // [1]
    add(new StatusPanel(), BorderLayout.CENTER);    // [2]
    add(new GameUI(), BorderLayout.LINE_END);       // [3]

欢迎提出任何可能引发这种行为的建议。

4

2 回答 2

3

您始终可以嵌套 JPanel/容器,每个都使用自己的布局。因此,整体布局可能是一个 BorderLayout,菜单位于 BorderLayout.NORTH,JPanel [1] 位于 BorderLayout.EAST 侧,然后使用另一个 BorderLayout 或 BoxLayout 将 JPanel 嵌套到 BorderLayout.CENTER 位置,然后将您的另一个将两个 JPanel 放入此 JPanel。例如,这个 CENTER JPanel 可以使用 BorderLayout,它可以将 JPanel [2] 保持在其 BorderLayout.NORTH 位置,并将 JPanel [3] 保持在其 BorderLayout.CENTER 位置。

于 2012-08-13T16:35:49.907 回答
1

JPanel的 's 里面必须有 Swing 组件,否则当你在JFrame.

由于您正在创建游戏,因此您需要在JPanel's 上设置首选尺寸,并在JFrame. 我假设您希望使用该方法JPanel直接绘制至少一个组件。paintComponent

您可以将JPanel-2JPanel-3嵌套在rightPanel中。您可以使用FlowLayoutrightPanel本身,也可以将JPanel-1rightPanel放入JFrame.

如果你坚持使用一个布局管理器来布局 3JPanel而不嵌套,你将不得不使用GridBagLayout. JPanel-1将是 1 列宽和 2 行深。 JPanel-2将是 1 列宽和 1 列深。 JPanel-3将是 1 列宽和 1 列深。

您仍然需要设置 3 的首选大小JPanel

于 2012-08-13T17:05:49.303 回答