Layouts de Java Swing

BorderLayout

Por defecto, si no indicamos nada, nuestras ventanas tienen BorderLayout.

JButton btn1 = new JButton("btn1");
JButton btn2 = new JButton("btn2");
		
this.add(btn1);
this.add(btn2);

BoxLayout

BoxLayout.PAGE_AXIS coloca los elementos verticalmente, de arriba a abajo
this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.PAGE_AXIS));
		
JButton btn1 = new JButton("btn1");
JButton btn2 = new JButton("btn2");
		
this.add(btn1);
this.add(btn2);

Group Layout

Esto es un poco enrevesado. Para que funcione correctamente tengo que añadir todos los componentes dos veces, una horizontal y otra verticalemente

	GroupLayout layout = new GroupLayout(this.getContentPane());
layout.setAutoCreateContainerGaps(true);
layout.setAutoCreateGaps(true);

layout.setHorizontalGroup(layout.createSequentialGroup().addComponent(btn1).addComponent(btn2).addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING).addComponent(btn3).addComponent(btn4)));

layout.setVerticalGroup(layout.createSequentialGroup().addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE).addComponent(btn1).addComponent(btn2).addComponent(btn3)).addComponent(btn4));


this.setLayout(layout);