Ich erstelle einen JFrame mit 4 JPanels. Mit GridBagLayout erstelle ich drei Zeilen und zwei Spalten, zwei Bereiche pro Spalte. Wenn ich die Zellenhöhe des blauen Feldes von 1 auf 2 ändere, kann ich die darunter liegende Zelle abdecken. Ich möchte das gleiche für das grüne Panel tun, um den Raum darunter zu füllen. Hier ist, was zur Zeit mein Code erzeugt:GridBagLayout - Wie kann ich diese Zelle füllen den Raum darunter?
Ich habe versucht, den grünen Panels gridheight auf 2 ändern, aber ich mit diesem Ende:
Bin ich GridBagLayout falsch verwenden? Was ist der geeignete Weg, dies zu tun?
Hier ist mein Code:
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);
}
}
Für eine bessere Hilfe früher, Posten [MCVE ] oder [Kurzes, eigenständiges, korrektes Beispiel] (http://www.sscce.org/). –
Danke Andrew. Ich habe den Rest des Codes hinzugefügt. –
Hinweis: Es beginnt sich wie erwartet zu verhalten, wenn es eine dritte Spalte mit drei Zellen mit jeweils einer Zeilenspanne von 1 gibt. –