/*
P R O G R A M M B E S C H R E I B U N G
Es werden Buttons, Textfelder, Labels und eine Zeichnung 
in einem Fenster erstellt.
*/

import java.awt.*;

import javax.swing.*;

// Hier wird ein Objekt der selbstgebastelten Klasse MyFenster erzeugt
public class MainLayout11 {
	public static void main(String[] args) {
		MyFenster myf = new MyFenster();
		myf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
	}
}


//Ein Frame ist ein Fenster bzw. Fenstersegment
//Es ist nach seiner Erzeugung zuerst anfänglich unsichtbar
//Hier wird die von JFrame abgeleitete Klasse MyFenster gebastelt, die 
//damit die ganze Leistungsfähigkeit von JFrame erbt.
class MyFenster extends JFrame{
	// Stelle in MyFenster deklarieren, an die montiert wird.	
	private Container mycont;
	// Buttons (Schalter) deklarieren	
	private JButton myb1, myb2;
	private JButton myb3, myb4;	
	//Textfelder deklarieren
	private JTextField myt1, myt2;
	private JTextField myt3, myt4;	
	// Labels (Beschriftungen) deklarieren	
	private JLabel myl1, myl2;
	private JLabel myl3, myl4;	
	// Zeichenflächen deklarieren	
	private JPanel myp1, myp2;
	
	// Ein Layout, genauer ein Gridlayout wie z.B:
	// GridLayout myGL23 = new GridLayout(2,3);
	// ist ein Layout (legt die Anordnung z.B. der Buttons und
	// Textfelder in einer Zeichenfläche bzw. einem Fenster fest).
	// Das obige Gridlayout bedeutet, dass die sichtbaren Komponenten
	// (z.B. Buttons, Textfelder, usw.) in einer Tabelle mit
	// 2 Zeilen und 3 Spalten angeordnet werden.
	// Dabei wird zuerst die 1. Zeile spaltenweise (mit z.B. Textfeld, 
	// Button, usw.) aufgefüllt, dann 2. Zeile.
	private GridLayout myGL62, myGL23;

	// Konstruktor
	public MyFenster(){
		// Liefert die Stelle in MyFenster, an die montiert wird.		
		mycont = getContentPane();
		// Erzeugt jeweils ein Button		
		myb1=new JButton("Go1");
		myb2=new JButton("Ok1");
		// Erzeugt jeweils ein einzeiliges Textfeld mit dem vorgegebenen
		// Text und der vorgegebenen Spaltenzahl. Dieser Text kann 
		// (im Gegensatz zu einem Label) editiert werden
		myt1=new JTextField("hier eingeben1",30);
		myt2=new JTextField("hier eingeben1",30);
		// Erzeugt jeweils ein Label (Beschriftung) mit dem vorgegebenen 
		// Text Dieser Text kann (im Gegensatz zu einem Textfeld) nicht 
		// editiert werden
		myl1=new JLabel("Haarfarbe eingeben1");
		myl2=new JLabel("Geschlecht1");
		
		myb3=new JButton("Go");
		myb4=new JButton("Ok");
		// Erzeugt jeweils ein einzeiliges Textfeld mit dem vorgegebenen
		// Text und der vorgegebenen Spaltenzahl. Dieser Text kann 
		// (im Gegensatz zu einem Label) editiert werden
		myt3=new JTextField("hier eingeben",30);
		myt4=new JTextField("hier eingeben",30);
		// Erzeugt jeweils ein Label (Beschriftung) mit dem vorgegebenen 
		// Text Dieser Text kann (im Gegensatz zu einem Textfeld) nicht 
		// editiert werden
		myl3=new JLabel("Haarfarbe eingeben");
		myl4=new JLabel("Geschlecht");
		
		
		
		// Erzeugt jeweils eine Zeichenfläche		
		myp1 = new JPanel();
		myp2 = new JPanel();
		
		myGL62  = new GridLayout(6,2);
		myGL23  = new GridLayout(2,3);
		// Ordnet das Layout dem Fenster MyFenster zu
		// ("formatiert" das Fenster MyFenster)
		mycont.setLayout(myGL62);
		// Ordnet das Layout der Zeichenfläche (Panel) myp1 zu
		// ("formatiert" die Zeichenfläche damit)
		myp1.setLayout(myGL23);
		// Ordnet das Layout der Zeichenfläche (Panel) myp2 zu
		// ("formatiert" die Zeichenfläche damit)
		myp2.setLayout(myGL23);
		// Montiert die grafischen Komponenten in die Zeichenflächen
		
		myp1.add(myl1);
		myp1.add(myt1);
		myp1.add(myb1);
		myp1.add(myl2);
		myp1.add(myt2);
		myp1.add(myb2);
		
		myp2.add(myl3);
		myp2.add(myt4);
		myp2.add(myb3);
		myp2.add(myl4);
		myp2.add(myt3);
		myp2.add(myb4);
		
		// Montiert die Zeichenflächen in das Fenster MyFenster		
		mycont.add(myp1);
		mycont.add(myp2);		
		//mycont.add(myz);
		// Fensterüberschrift festlegen
		setTitle("Meine Zeichnung");
		// Koordinaten des linken, oberen Ecks des Fensters festlegen
		// Koordinate x = 30, Koordinate y = 60.		
		setLocation(30,60);
		// Die Breite des Fensters in x-Richtung = 600
		// Die Breite des Fensters in y-Richtung = 400		
		setSize(600,400);
		// Macht das Fenster sichtbar		
		setVisible(true);
	}
	
}

	

	



