我正在尝试制作简单的游戏布局。
我从Containers进行布局-所有容器都与我的示例相似(这意味着JPanel,布局,添加组件,返回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;
}
最佳答案
看起来您正在尝试实现如下布局:
+-----+-----+
| A | |
+-----+ C |
| B | |
+-----+-----+
为此,您的网格约束应为:
| x y width height
--+---------------------
A | 0 0 1 1
B | 0 1 1 1
C | 1 0 1 2
我认为,最好始终使用“功能强大”的布局管理器,而不是处理特殊情况,嵌套面板和将内容排列不灵活的问题。