Grid und BorderLayout kombinieren

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);

	}

}

ändere mal die Reihenfolge

  1. Panels bestücken
  2. Panels zusammenpacken
    vielleicht hilft das

[QUOTE=EagleEye]ändere mal die Reihenfolge

  1. Panels bestücken
  2. Panels zusammenpacken
    vielleicht hilft das[/QUOTE]

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.

Danke

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.

  1. Möglichkeit: Das gesamte Frame verkleinern
  2. Möglichkeit: Den Container mit dem GridLayout nochmal in einen Container packen, welcher die angezeigte Componente zentral darstellt.

achso naja das war früh da war ich noch nicht so wach und konnte das auch nicht überprüfen :wink:

Gut, dann verzeih ich dir nochmal :stuck_out_tongue_winking_eye:

na da bin ich aber froh :wink: