package GUIAnwendungen;
import java.awt.Color;
import java.awt.Font;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/*
 * - ActionListener ist ein (marker)Interface Klasse,
 *   die nur eine abstrakte Methode hat, die mit drücken auf Button reagiert
 * 
 * Also Das Kochrezept: 
 * 1. Button erstellen: JButton button = new JButton("Text");
 * 2. ActionListener implementieren: Implementiere ActionListener, um die Funktionalität zu definieren.
 * 3. ActionListener zum Button hinzufügen:
 * 		3.1 button.addActionListener(new ActionListener() { ... });
 * 		3.2 oder mit separater Methode: button.addActionListener(e -> deineMethode());
 */
public class jbutton implements ActionListener  {

	public static void main(String[] args) {
		//1. 
		JButton button = new JButton();
					   // x   y  width height
		button.setBounds(100,100,200,  50);
		button.setText("Click me");
		button.addActionListener(null);

		 // 2. Hinzufügen des ActionListeners zum Button
		JLabel label = new JLabel();
		
		/*
		 * Position und Größe des Labels eingeben warum?
		 * weil ich frame.setLayout(null); aktiviert habe
		 */
        label.setBounds(150, 50, 100, 50); 
        /*
         * new ActionListener() ist nicht das Erzeugen einer Instanz des Interfaces selbst, 
         * sondern das Erstellen einer Instanz einer anonymen Klasse, die das ActionListener-Interface implementiert.
         */
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // Dies ist die Aktion, die ausgeführt wird, wenn der Button geklickt wird
            	clicked(label);
            }
        });
        
       
		
		// Erstelle ein Fenster
		JFrame frame = new JFrame();
		
		//stellt sicher, dass keine automatische Positionierung und Größenanpassung erhalten
		frame.setLayout(null);
		
		// setSize(width, height)
		frame.setSize(750, 750);

		// setzte einen Überschrift für mein Fenster
		frame.setTitle("Mein erstes Fenster");
		
		//setVisible(boolean): gibt an, ob mein Fenster sichtbar ist oder nicht
		frame.setVisible(true);
		frame.add(label);
		frame.add(button);
		// andere Möglichkeit, button auf Fenster zu zeigen
		// frame.add(new JButton("name"))
		
		
	}
	
	
	public static void clicked(JLabel label) {
		label.setText("Hall Welt");
	}


	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	
	
}
