0


我正在尝试制作简单的游戏布局。我从容器中进行布局 - 所有容器都与我的示例相似(这意味着 JPanel、setlayout、添加组件、返回 JPanel)。

整个布局的结构:(这3个在主布局中)
上 - BorderLayout.PAGE_START; //菜单
中心 - BorderLayout.PAGE_CENTER; //centerContainer()
底部 - BorderLayout.PAGE_END; //statusBar - 仅带有


这 3 个容器的文本放置的容器可以正常工作,但问题在于放置在 centerContainer 中。
中心容器结构:3个容器——aboutServerContainer、aboutGameContainer、gameContainer。

gameContainer 的大小为 450x450

我想在 serverInfo 下以与 gameContainer 和 gameInfo 相同的高度启动serveInfo,但它以某种方式将 serverInfo 和 gameInfo 放在它下面,但它也在 gameContainer 下腾出可用空间(我不想要任何可用空间。)

在此处输入图像描述

private Container centerContainer() {
        JPanel centerJPanelJP = new JPanel();
        GridBagConstraints gbc = new GridBagConstraints();
        stredniJPanelJP.setLayout(new GridBagLayout());

        //gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = 0;
        gbc.gridy = 0;
        gbc.gridheight = 1;
        centerJPanelJP.add(aboutServerContainer(),gbc);

        gbc.gridheight = 1;
        gbc.gridy = 1;
        centerJPanelJP.add(aboutGameContainer(),gbc);

        gbc.gridheight = 2;
        gbc.gridx = 0;
        gbc.gridy = 0;
        centerJPanelJP.add(gamePanelContainer(),gbc);

        return centerJPanelJP;
    }
4

2 回答 2

3

看起来您正在尝试实现这样的布局:

+-----+-----+
|  A  |     |
+-----+  C  |
|  B  |     |
+-----+-----+

为此,您的网格约束应为:

  |  x  y  width  height
--+---------------------
A |  0  0    1       1 
B |  0  1    1       1 
C |  1  0    1       2 

在我看来,最好始终使用“强大”的布局管理器,而不是处理特殊情况、嵌套面板和排列不灵活的问题。

于 2012-02-07T15:26:03.927 回答
0

为什么不这样走:

有一个主要的 BroderLayout

  • 不向 PAGE_START 添加任何内容
  • 将中心容器添加到 CENTER
  • 将 VerticalPanel 添加到 LINE_START -在垂直面板中添加 serverInfo -在垂直面板中添加游戏信息 -将状态栏添加到 PAGE_END
于 2012-02-07T15:08:18.197 回答