Ich wollte zuerst BorderLayout erstellen und dort meine 2 Panel links und unten positionieren. Panel Nr1 sollte GridLayout kriegen mit 3 Zeilen und 1 Spalte und dort wollte ich meine CheckBoxen hintereinander reinpacken(in jede Zeile eine Checkbox). Nur hat das irgendwie nicht hingehauen. Der hat die Checkboxen außerhalb von panel1 eingefügt. Geht das nicht was ich vorhabe?
package driver;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.LayoutManager;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GUI extends JFrame{
JPanel panel1, panel2, panel3;
JLabel label1, label2, label3;
JCheckBox box1, box2, box3;
public GUI() {
super("Fahrschule v.ERROR");
setSize(700, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
panel1 = new JPanel();
panel2 = new JPanel();
box1 = new JCheckBox("Das ist Checkbox Nr 1");
box2 = new JCheckBox("Das ist Checkbox Nr 2");
box3 = new JCheckBox("Das ist Checkbox Nr 3");
add(panel1, BorderLayout.WEST);
add(panel2, BorderLayout.SOUTH);
panel1.setLayout(new GridLayout(3,1));
panel1.setBackground(Color.RED);
panel2.setBackground(Color.BLUE);
panel1.add(box1);
panel1.add(box2);
panel1.add(box3);
}
}
package driver;
public class Start {
public static void main(String[] args) {
new GUI().setVisible(true);
}
}
Ne, das ist unwichtig. Mal ganz davon abgesehen, dass alles korrekt dargestellt wird. Aber ich nehme an, du hättest bei deinen CheckBoxen gerne den Hintergrund von panel1!? Dazu musst du bei den CheckBoxen noch setOpaque(false); aufrufen.
Achso! Ich konnte kein Hintergrund von Panel sehen und dachte dass sie nicht da drauf liegen. Der Abstand zwischen Checkboxen ist aber riesig, kann ich das ändern? Oder geht das nur zumachen in dem ich Panel unten und oben vergrößere, dann sollte sich das Panel rechts auch verkleinern.
Du hast keinen Abstand zwischen deinen Boxen, sondern die Boxen werden soweit vergrößert, bis der komplette verfügabre Platz des Containers gleichmäßig aufgebraucht ist. Das ist eine Eigenschaft des GridLayouts.
Möglichkeit: Das gesamte Frame verkleinern
Möglichkeit: Den Container mit dem GridLayout nochmal in einen Container packen, welcher die angezeigte Componente zentral darstellt.