GridBagLayout не может получить правильное расположение
Я новичок в GridBagLayout, но я попытался использовать стандартное соглашение, которое я мог найти, которое заключалось в том, чтобы нарисовать мою идею на листе сетки, а затем попытаться перевести значения сетки в gridbag ...
моя цель - сделать макет как вы видите ниже:
в настоящее время это выглядит так:
любая идея'почему?
точные размеры ям, если вы думаете о сетке с верхним левым углом 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 начальнаяX, внутренняя начальная Y, внутренняя ширина, внутренняя высота)
/*
* 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));
}
}
любая помощь будет оценена (но, пожалуйста, объясните вашу логику)