/*
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 (Schalter) erzeugt, der angeklickt
werden muß.
Nach jedem Mausklick ändert sich die Hintergrundfarbe des 
Buttons (Schalter) von blau auf rot bzw. von rot auf 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 MainListener12 {
	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;
	// Die folgende Variable myb ist ohne Bezeichner (private, public)
	// Auf sie kann deshalb innerhalb des packages zugegriffen werden.
	// Dies ist keine gute Lösung, da auf Membervariablen mit 
	// Methoden zugegriffen werden soll. Allerdings ist dies damit für den 
	// Anfänger der direkte Zugriff (über die Memebervariable) in der Wanze 
	// auf das Fenster vielleicht leichter zu durchschauen.
	// Lösung mit Zugriff über eine Methode erfolgte in einer früheren Version 
	// Der Button (Schalter) wird deklariert.
	JButton myb;
	// Eine Wanze 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(200,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);
	};
}


class MyWanze implements ActionListener {
private MyFenster myfVerweis;
private int myStatus;

	// Konstruktor
	public MyWanze(MyFenster f){
		myfVerweis = f;
		myStatus = 1;
	}

public void actionPerformed (ActionEvent myae) {
	if(myStatus==1){
		myfVerweis.myb.setBackground(Color.blue);
		myStatus=0;
	}
	else{
		myfVerweis.myb.setBackground(Color.red);
		myStatus=1;
	}
	// Bringt Meldung auf dem Bildschirm
	System.out.println("Ich wurde angeklickt");
	}
}
