簡體   English   中英

GridBagLayout的麻煩

[英]GridBagLayout troubles


我正在嘗試制作簡單的游戲布局。 我從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 

我認為,最好始終使用“功能強大”的布局管理器,而不是處理特殊情況,嵌套面板以及將內容排列不靈活的問題。

為什么不這樣:

有一個主要的BroderLayout

  • 不添加任何內容到PAGE_START
  • 將中心容器添加到CENTER
  • 將VerticalPanel添加到LINE_START-在垂直面板中添加serverInfo-在垂直面板中添加gameInfo-將狀態欄添加到PAGE_END

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM