2016-04-15 20 views
0

我想創建一個3乘4的jpanels網格。 2 by 4 is doable with gridLayout but i cannot add the cyan jpanel along the bottom. This is What I am getting when I use GridBagLayout.
貝婁是我的網格包約束我不知道爲什麼,但面板4-8是無形GridBag佈局一半的組件不可見

 ///////////Build Top Panels/////////// 
    buildPanel(); 
    gc.weightx = 0.5; 
    gc.gridx = 0; 
    gc.gridy = 0; 
    this.add(p1,gc); // panel1 

    buildPanel2(); 
    gc.gridx = 1; 
    gc.gridy = 0; 
    this.add(p2,gc); //panel2 

    buildPanel3(); 
    gc.gridx = 2; 
    gc.gridy = 0; 
    this.add(p3,gc);//panel3 

    buildPanel4(); 
    gc.gridx = 3; 
    gc.gridy = 0; 
    this.add(p4,gc);//panel4 

    buildBottomPanel(); 
    gc.gridx = 0; 
    gc.gridy = 2; 
    this.add(b1,gc);//panel5 

    buildBottomPanel2(); 
    gc.gridx = 1; 
    gc.gridy = 2; 
    this.add(b2,gc);//panel6 

    buildBottomPanel3(); 
    gc.gridx = 2; 
    gc.gridy = 2; 
    this.add(b3,gc);//panel7 

    buildBottomPanel4(); 
    gc.gridx = 3; 
    gc.gridy = 2; 
    this.add(b4,gc);//panel8 

    buildFooter(); 
    gc.gridx = 0; 
    gc.gridy = 2; 
    gc.gridwidth = 4; 
    gc.fill = GridBagConstraints.HORIZONTAL; 
    this.add(footer,gc);//panel9 
+1

這聽起來像某人的首選尺寸已被正確計算。考慮提供一個[可運行的示例](https://stackoverflow.com/help/mcve),它可以證明你的問題。這不是代碼轉儲,而是您正在做的事情的一個例子,它突出了您遇到的問題。這將導致更少的混淆和更好的響應 – MadProgrammer

+0

真的沒有任何方法可以發佈我的可運行代碼,而不會傾銷我的350行代碼,所有事情都需要初始化和構建 – Maxium

+0

好吧,原則上不知道這些面板是如何建立,最好的你會得到的是猜測工作,這真的不鼓勵 – MadProgrammer

回答

1

buildBottomPanel()通過buildBottomPanel4()被放置在(0,2)到(3,2 )

gc.gridx = 0; 
gc.gridy = 2; 
this.add(b1,gc);//panel5 

gc.gridx = 3; 
gc.gridy = 2; 
this.add(b4,gc);//panel8 

然後你的頁腳放置在它們的頂部:

buildFooter(); 
gc.gridx = 0; 
gc.gridy = 2; 
gc.gridwidth = 4; 
gc.fill = GridBagConstraints.HORIZONTAL; 
this.add(footer,gc);//panel9 

使用gc.gridy = 1˚F或底部面板。