import java.awt.*;

public class EingabeFormular extends Frame
{
	//GridBagLayout für das Hauptpanel
	GridBagLayout              einGridBagLayout;

	//Darstellungsconstraints für die Feldbeschriftungen
	GridBagConstraints         BeschriftungsConstraints;
	//Darstellungsconstraints für die Eingabefelder
	GridBagConstraints         EingabeFeldConstraints;

	// Container für die Steuerelemente (Beschriftungen und Eingabefelder)
	Panel dieFlaeche;
  
	// Konstruktur der Klasse
	public EingabeFormular(String derFensterTitel)
	{
		// Aufruf des Konstrukturs der Oberklasse Frame
		super(derFensterTitel);

		// Erzeugen und Zuweisen des LayoutManagers
		einGridBagLayout = new GridBagLayout();
		dieFlaeche = new Panel( einGridBagLayout );
		add( BorderLayout.CENTER, dieFlaeche );

		// Darstellungsanweisungen für die Beschriftungen (rechtsbündig)
		BeschriftungsConstraints = new GridBagConstraints();
		BeschriftungsConstraints.anchor = GridBagConstraints.EAST;
		BeschriftungsConstraints.fill = GridBagConstraints.NONE;

		// Darstellungsanweisungen für die Eingabefelder
		// (linksbündig; restlichen Platz im Raster verwenden)
		EingabeFeldConstraints = new GridBagConstraints();
		EingabeFeldConstraints.anchor = GridBagConstraints.WEST;
		EingabeFeldConstraints.fill = GridBagConstraints.NONE;
		EingabeFeldConstraints.gridwidth = GridBagConstraints.REMAINDER;

		// Einfügen der Steuerelemente
		addFormularFeld(new Label("Name:"),  new TextField("Maier", 30));
		addFormularFeld(new Label("Vorname:"), new TextField("Anna", 20));
		addFormularFeld(new Label("Straße:"),  new TextField("Friedrich-Ebert-Str. 23", 40));
		addFormularFeld(new Label("PLZ:"),  new TextField("D-04107", 7));
		addFormularFeld(new Label("Ort:"),  new TextField("Leipzig", 40));
	}

	// Methode für das Einfügen der Kompontenen unter Berücksichtigung
	// der jeweiligen Constrinats
	public void addFormularFeld(Label dieBeschriftung, TextField dasEingabeFeld)
	{
		einGridBagLayout.setConstraints(dieBeschriftung, BeschriftungsConstraints);
		dieFlaeche.add(dieBeschriftung);

		einGridBagLayout.setConstraints(dasEingabeFeld, EingabeFeldConstraints);
		dieFlaeche.add(dasEingabeFeld);

		// Fenster wird auf der Basis der preferredSize der einzelnen
		// Kompontenen kleinstmöglich angezeigt
    	pack();
	}

	public static void main(String[] args)
	{
		// Hauptfenster erzeugen
		EingabeFormular dasFenster = new EingabeFormular("Beispiel GridBagLayout");

		// Fenster wird sichtbar gemacht
		dasFenster.setVisible( true );
	}
}
