/* B E S C H R E I B U N G
GleichesProgramm, wie Vorgängerversion, außer dass eine eigene
Zeichenfläche gebastelt wird (g.h. Unterklasse von JPanel).
*/


package gridbaglayout2;
import java.awt.*;

import javax.swing.*;

// Hier wird ein Objekt der selbstgebastelten Klasse MyFenster erzeugt
public class MainGridBagLayout2 {
	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{

    // Konstruktor
	public MyFenster(){
        // Stelle in MyFenster deklarieren, an die montiert wird.
        Container mycont;
        JButton myb1, myb2, myb3, myb4, myb5, myb6, myb7;
        JPanel myZeichenflaeche;
        GridBagLayout gbl;

		// Liefert die Stelle in MyFenster, an die montiert wird.
		mycont = getContentPane();
		myZeichenflaeche=new JPanel();
		myb1=new JButton("B1");
		myb2=new JButton("B2");
		myb3=new JButton("B3");
		myb4=new JButton("B4");
		myb5=new JButton("B5");
		myb6=new JButton("B6");
		myb7=new JButton("B7");
		gbl = new GridBagLayout();
        //myZeichenflaeche.setLayout(gbl);

        addiereKopmonente(myZeichenflaeche, gbl, myb1, 0, 0, 1, 2, 1, 1);
        // weightx = 3 bedeutet, dass Buttom myb1 dreimal so breit ist
        // wie myb1
        addiereKopmonente(myZeichenflaeche, gbl, myb2, 1, 0, 1, 1, 3, 1);
        addiereKopmonente(myZeichenflaeche, gbl, myb3, 1, 1, 1, 1, 1, 1);
        addiereKopmonente(myZeichenflaeche, gbl, myb4, 0, 2, 2, 1, 1, 1);
        addiereKopmonente(myZeichenflaeche, gbl, myb5, 0, 3, 1, 1, 1, 1);
        addiereKopmonente(myZeichenflaeche, gbl, myb6, 0, 4, 1, 1, 1, 1);
        addiereKopmonente(myZeichenflaeche, gbl, myb7, 1, 3, 1, 2, 1, 1);

        myZeichenflaeche.setLayout(gbl);



//		mycont.add(myZeichenflaeche, BorderLayout.CENTER);
		mycont.add(myZeichenflaeche);

        // 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);
	}
/*
    public void addiereKopmonente(Container cont, Component c, int x, int y, int width, int height, double weightx, double weighty){
        GridBagConstraints gbc = new GridBagConstraints();
        // Eventueller Freiraum durch Vergrößern der Komponenten in
        // x-Richtung und y-Richtung ausgefüllt.
        gbc.fill = GridBagConstraints.BOTH;
        // Eventueller Freiraum nur durch Vergrößern der Komponenten in
        // x-Richtung ausgefüllt.
        // gbc.fill = GridBagConstraints.HORIZONTAL;
        // Eventueller Freiraum wird nicht ausgefüllt durch Vergrößern der
        // Komponenten
        //gbc.fill = GridBagConstraints.NONE;
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
		cont.add(c, gbc);
    }
*/
    public void addiereKopmonente(JPanel p, GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty){
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.gridx = x;
        gbc.gridy = y;
        gbc.gridwidth = width;
        gbc.gridheight = height;
        gbc.weightx = weightx;
        gbc.weighty = weighty;
        // Beschränkung für Komponente c (z.B. Button)am Layout-Manager anmelden.
        gbl.setConstraints(c, gbc);
        p.add(c);
    }
}

























