我是GridBagLayout的新手,但我嘗試使用標準約定,我可以找到哪一個是在一張網格紙上繪製我的想法,然後嘗試將網格值轉換爲網格包...GridBagLayout無法獲得佈局正確
我的目標是使佈局像你見下文:
它目前看起來是這樣的:
任何想法是爲什麼?
精確的尺寸我在找,如果你認爲一個網格與左上角是0,0 爲
- 在目標圖像面板紅色爲:開始在列0,跨度爲10列,高度爲1行
- 對於黑色面板:從第0列開始,第1行,跨度爲10列,高度爲20行
- 對於藍色面板:開始於第0列,第21行,第10行列,高度爲1
- 綠色列:從第10列第0行開始,跨度16列,高7
- 爲紫色柱:開始於第10欄,第7行,跨度16列,與高度16
這裏是我的源代碼:
GBC是一個幫手延伸的GridBagConstraints類,所使用的構造方法是
GBC(INT startingX,INT startingY,INT寬度,INT高度)
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.GridBagLayout;
import java.awt.Rectangle;
import javax.swing.JApplet;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Demo extends JApplet
{
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JPanel panel3 = new JPanel();
JPanel panel4 = new JPanel();
JPanel panel5 = new JPanel();
public void init()
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
initComponents();
}
});
}
public void initComponents()
{
//set the layout of the content pane to gridbag layout
GridBagLayout gridBag = new GridBagLayout();
getContentPane().setLayout(gridBag);
Rectangle rect = getContentPane().getBounds();
panel1.setBackground(Color.green);
panel2.setBackground(Color.black);
panel3.setBackground(Color.red);
panel4.setBackground(Color.orange);
panel5.setBackground(Color.yellow);
add(panel4, new GBC(10, 0, 16, 7).setFill(GBC.BOTH).setWeight(1.0, 1.0));
add(panel1, new GBC(0, 0, 10, 1).setFill(GBC.BOTH).setWeight(1.0, 1.0));
add(panel3, new GBC(0, 21, 10, 1).setFill(GBC.BOTH).setWeight(1.0, 1.0));
add(panel2, new GBC(0, 1, 10, 20).setFill(GBC.BOTH).setWeight(1.0, 1.0));
add(panel5, new GBC(10, 7, 16, 16).setFill(GBC.BOTH).setWeight(1.0, 1.0));
}
}
任何幫助竟被d謝謝(但請解釋你的邏輯)
GridBagLayout在默認情況下不會使列的大小相等。根據放置在主JPanel上的Swing組件的內容來設置列的大小。您應該首先創建5個JPanel中的每一個的內容,然後嘗試使用GridBagLayout將它們組合在主JPanel上。 –
好吧,對抗直觀的xD,你會認爲你想先設計佈局。無論如何,謝謝你,我會試一試。 – nachos
@GilbertLeBlanc它仍然看起來完全相同後,添加組件:(任何想法爲什麼這些行和列值不起作用? – nachos