GridBagLayout麻烦

时间:2012-02-07 15:01:29

标签: java swing layout gridbaglayout


我正在尝试制作简单的游戏布局。 我从容器中制作布局 - 所有容器都与我的示例类似(它表示JPanel,setlayout,添加组件,返回JPanel)。

整个布局的结构:(这3个在主要布局中)
upper - BorderLayout.PAGE_START; //菜单
中心 - BorderLayout.PAGE_CENTER; // centerContainer()
bottom - BorderLayout.PAGE_END; // statusBar - 只是带文本的容器


放置这3个容器工作正常,但问题是放在centerContainer中 中心容器结构:3个容器 - aboutServerContainer,aboutGameContainer,gameContainer。

gameContainer的尺寸为450x450

我想以与serverInfo下的gameContainer和gameInfo相同的高度启动serveInfo, 但它以某种方式输入serverInfo并且gameInfo就是它,但它也在gameContainer下创建了自由空间(我不想在这里有任何空闲空间。)

enter image description here

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;
    }

2 个答案:

答案 0 :(得分:3)

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

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

要实现这一点,您的网格约束应为:

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

在我看来,最好始终如一地使用“强大的”布局管理器,而不是处理特殊情况,嵌套面板和衬砌内容的不灵活性。

答案 1 :(得分:0)

为什么不这样:

有一个主要的BroderLayout

  • 不向PAGE_START添加任何内容
  • 将中心容器添加到CENTER
  • 将VerticalPanel添加到LINE_START    -in vertical panel add serverInfo    -in vertical panel添加gameInfo -ADd状态栏到PAGE_END