/*
P R O G R A M M B E S C H R E I B U N G
In diesem Programm wird ein Button erzeugt, der angeklickt werden muss.
Nach einem Mausklick wird die Hintergrundfarbe des Buttons (Schalter) blau 
und bleibt danach immer blau.
Außerdem wird nach jedem Mausklick die Meldung "Ich wurde angeklickt" 
ausgegeben.
*/

package de;
import javax.swing.*;      // GUI Komponente

import java.awt.*;         // Layouts
import java.awt.event.*;   // Ereignisse

// Hier wird ein Objekt der selbstgebastelten Klasse MyFenster erzeugt
public class MainListener11 {
	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;
	// Eine Zeichenfläche deklarieren
	private JPanel mypan;
	// Ein Button (Schalter) deklarieren
	private JButton myb;
	// Eine Wanze wird deklarieren
	private MyWanze myw;

	// Konstruktor
	public MyFenster() {
		// Liefert die Stelle in MyFenster, an die montiert wird.
		mycont = getContentPane();
		// Erzeugt eine Zeichenfläche
		mypan = new JPanel();
		// Erzeugt einen Button
		myb = new JButton("Bitte klicke mich");
		// Erzeugt eine Wanze
		myw = new MyWanze(this);
		// Montiert die Wanze an den Button
		myb.addActionListener(myw);
		// Montiert den Button an die Zeichenfläche
		mypan.add(myb);
		// Montiert die Zeichenfläche in das Fenster MyFenster
		mycont.add(mypan);
		// Fensterüberschrift festlegen		
		setTitle("Ein Klick-Test");
		// Koordinaten des linken, oberen Ecks des Fensters festlegen
		// Koordinate x = 100, Koordinate y = 200.		
		setLocation(100,200);
		// Die Breite des Fensters in x-Richtung = 400
		// Die Breite des Fensters in y-Richtung = 200		
		setSize(400,200);
		// Macht das Fenster sichtbar		
		setVisible(true);
	};
  
	public JButton getMyb(){
		return(myb);
	}
}


class MyWanze implements ActionListener {
	private MyFenster myfVerweis;

	// Konstruktor
	public MyWanze(MyFenster f){
		myfVerweis = f;
	}

	public void actionPerformed (ActionEvent myae) {
		myfVerweis.getMyb().setBackground(Color.blue);
		// Bringt Meldung auf dem Bildschirm
		System.out.println("Ich wurde angeklickt");
	}
}

