Я создаю JFrame с 4 JPanels. Используя GridBagLayout, я создаю три строки и два столбца, по две панели на столбец. Изменяя силовую ячейку синей панели от 1 до 2, я могу заставить ее покрыть ячейку под ней. Я хотел бы сделать то же самое для зеленой панели, чтобы заполнить пространство под ней. Вот что в настоящее время производит мой код:GridBagLayout - Как я могу сделать эту ячейку заполнять пространство под ней?
Я попытался изменить gridheight зеленой панели на 2, но я в конечном итоге с этим:
Пользуюсь ли я GridBagLayout неправильно? Каков подходящий способ сделать это?
Вот мой код:
import java.awt.Color;
import java.awt.Container;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
addComponents(frame.getContentPane());
frame.setSize(800, 600);
frame.setVisible(true);
}
public static void addComponents(Container contentPane) {
contentPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);
c.fill = GridBagConstraints.BOTH;
c.gridx = 0;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 2;
c.weightx = 1;
c.weighty = 0.85;
JPanel panel1 = new JPanel();
panel1.setBackground(Color.BLUE);
contentPane.add(panel1, c);
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = 1.1;
c.weighty = 0.35;
JPanel panel2 = new JPanel();
panel2.setBackground(Color.YELLOW);
contentPane.add(panel2, c);
c.gridx = 1;
c.gridy = 0;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = 0.15;
c.weighty = 0.5;
JPanel panel3 = new JPanel();
panel3.setBackground(Color.RED);
contentPane.add(panel3, c);
c.gridx = 1;
c.gridy = 1;
c.gridwidth = 1;
c.gridheight = 1;
c.weightx = 0.38;
c.weighty = 0.5;
JPanel panel4 = new JPanel();
panel4.setBackground(Color.GREEN);
contentPane.add(panel4, c);
}
}
Для лучшей помощи рано, опубликовать [MCVE ] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –
Спасибо, Андрей. Я добавил остальную часть кода. –
Примечание: он начинает вести себя так, как ожидалось, если есть 3-й столбец из трех ячеек, каждый с диапазоном строк 1. –