
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

// Beispiel mit Schaltern
/*
Durch die beiden Schalter wird das Label geändert.
Die Schalter haben auch einen Hilfstext
Dabei werden auch die Schriften geändert
Beide Schalter haben einen gemeinsamen Action_listener
Beide Schalter ändern einen Text
*/

// Neu gegenüber Version 3:
// Mouse-Entered und Mouse-Exit für den linken Schalter


public class JButton_Bsp04 extends JFrame {
  JToolBar toolBar = new JToolBar();
  JButton Bn1 = new JButton();
  JButton Bn2 = new JButton();
  JLabel label1;
  JLabel lStatusBar;


  //Frame konstruieren
  public JButton_Bsp04() {
    this.setSize(new Dimension(500, 300));
    this.setTitle("JButton_Bsp04");
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  //Initialisierung der Komponente
  private void setGUI()  {
    Bn1.setText("1. Labeländerung");
    Bn1.addMouseListener(new java.awt.event.MouseAdapter() {

      public void mouseEntered(MouseEvent e) {
        Bn1_mouseEntered(e);
      }

      public void mouseExited(MouseEvent e) {
        Bn1_mouseExited(e);
      }
    });
    Bn1.setToolTipText("Ändert den Text im Anzeigeelement");
    Bn1.addActionListener(new java.awt.event.ActionListener() {

      public void actionPerformed(ActionEvent e) {
        Bn1_2_actionPerformed(e);
      }
    });
    toolBar.add(Bn1);


    Bn2.setText("2. Labeländerung");
    Bn2.setToolTipText("Ändert den Text im Anzeigeelement");
    Bn2.addActionListener(new java.awt.event.ActionListener() {

      public void actionPerformed(ActionEvent e) {
        Bn1_2_actionPerformed(e);
      }
    });
    toolBar.add(Bn2);


    this.getContentPane().add(toolBar, BorderLayout.NORTH);

    label1 = new JLabel("Text");
    label1.setText("Dies ist ein Anzeigetext");
    label1.setFont( new Font("Arial", Font.BOLD,14));
    label1.setForeground( Color.white);


    this.getContentPane().add(label1, BorderLayout.CENTER);

     Bn1.setFont( new Font("Arial", Font.BOLD,18)  );
     Bn1.setForeground( Color.blue );
     Bn1.setBackground( Color.yellow );  // wird nicht gesetzt

   Bn1.setIcon( loadIcon("banana.gif","banana") );
   Bn2.setIcon( loadIcon("hotdog.gif","hotdog") );



   lStatusBar = new JLabel("-");
   lStatusBar.setFont( new Font("Arial", Font.BOLD,18)  );
   this.getContentPane().add(lStatusBar, BorderLayout.SOUTH);

  }  // setGUI


  private ImageIcon loadIcon(String name, String description) {
   	// String path = "images" + name;
   	String path = name;  // Hier eventuell den path eintragen
    return new ImageIcon(path, description);
  }



 void Bn1_2_actionPerformed(ActionEvent e) {
     if (e.getSource()==Bn1) {
       System.out.println("Schalter1 angeklickt");
       lStatusBar.setText("Schalter1 angeklickt");

       label1.setText("JButton1 angeklickt");
       label1.setFont( new Font("TimesRoman", Font.ITALIC,32)  );
       label1.setForeground( Color.red );
     }
     else {
       if (e.getSource()==Bn2) {
         System.out.println("Schalter2 angeklickt");
         lStatusBar.setText("Schalter2 angeklickt");
         label1.setText("JButton2 angeklickt");
         label1.setFont( new Font("Arial", Font.PLAIN,12)  );
         label1.setForeground( Color.blue );
         label1.setBackground( Color.yellow );  // wird nicht gesetzt
       }
       else {
         lStatusBar.setText("Error in Methode BN1_2");
         System.err.println("ERROR in Methode Bn1_2_actionPerformed"  );
         System.err.println("Weder Schalter 1 noch Schalter 2"  );
       }
     }
  }




  void Bn1_mouseEntered(MouseEvent e) {
    System.err.println("Maus ueber dem Schalter"  );
    lStatusBar.setText("Maus ueber dem Schalter"  );
  }

  void Bn1_mouseExited(MouseEvent e) {
    System.err.println("Maus verlaesst den Schalter"  );
    lStatusBar.setText("Maus verlaesst den Schalter"  );
  }

  public static void main(String[] args) {
    JButton_Bsp04 frame = new JButton_Bsp04();
    frame.setVisible(true);
  }

}
