代码之家  ›  专栏  ›  技术社区  ›  Ángel Araya

布局管理器建议

  •  1
  • Ángel Araya  · 技术社区  · 12 年前

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

    enter image description here

    我一直在尝试使用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]
    

    任何可能引发这种行为的建议都是受欢迎的。

    2 回复  |  直到 12 年前
        1
  •  3
  •   Hovercraft Full Of Eels    12 年前

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

        2
  •  1
  •   Gilbert Le Blanc    12 年前

    你的 JPanel 的内部必须有Swing组件,否则当您在 JFrame

    既然你正在创建一个游戏,你需要在你的 面板 的,并在 窗口 。我想你至少要画一幅 面板 组件直接使用 paintComponent 方法

    你可以筑巢 J面板-2 J面板-3 右侧面板 。您可以使用 FlowLayout 对于 右侧面板 本身,以及 J面板-1 右侧面板 进入 窗口

    如果您坚持使用布局管理器来布局3 面板 没有嵌套,您将不得不使用 GridBagLayout J面板-1 将是1列宽和2行深。 J面板-2 将为1列宽和1列深。 J面板-3 将为1列宽和1列深。

    您仍然需要设置3的首选尺寸 面板 的。