Komponente zentrieren

Wie lässt sich eine Komponente innerhalb eines Containers zentrieren?

Möchte man eine Komponente wie z.B. ein Label oder einen Button innerhalb eines Containers ( JWindow, JFrame, JPanel , etc.) zentrieren, so lässt sich dies auf einfache Weise über ein GridBagLayout erledigen.

import java.awt.GridBagLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class KomponenteZentrieren {
	
	public KomponenteZentrieren() {
	    JFrame frame = new JFrame();
	    frame.setLayout(new GridBagLayout());
	    frame.setSize(300, 300);
	    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	    
		JLabel label = new JLabel("Hallo Welt!");
		frame.add(label);
		frame.setVisible(true);
	}
	
	public static void main(String[] args) {
		new KomponenteZentrieren();
	}
}
					
				

Im Beispiel werden im Konstruktor der Klasse je ein JFrame und ein JLabel erzeugt. Das Label wird auf den Frame gesetzt, dem vorher ein GridBagLayout als Layoutmanager übergeben wurde.

Üblicherweise werden dem GridBagLayout zur Spezifizierung GridBagConstraints zugewiesen, die die Feinheiten der Komponentenanordnung bestimmen. Geschieht dies nicht, so greifen, wie in diesem Fall, deren Default-Werte. Die int-Variable GridBagConstraints.anchor bestimmt hierbei die Positionierung der hinzugefügten Komponente innerhalb ihres Containers. Als Standard wird hier intern die statische Variable GridBagConstraints.CENTER mit dem Wert 10 verwendet.