~Java4Beginners~
~Java4Beginners~

ActionListener

Der ActionListener behandelt die Event's, welche durch Drücken eines Bedienelements hervorgerufen wird. In erster Linie werden wir den ActionListener bei der Behandlung von Button-Ereignissen benötigen, aber auch JMenuItems sind über den ActionListener handlebar.

Die Klasse ActionListener verfügt über die abstrakte Methode actionPerformed(ActionEvent e), welche wir bei Verwendung des Listeners überschreiben müssen.

Die Zuweisung des ActionListeners an ein Bedienelement ist äußerst einfach, da zu jedem Bedienelement Methoden für das Hinzufügen zu den möglichen ActionListenern besteht.


    bt_DrueckMichButton.addActionListener(xxx);
Wir haben nun 3 Möglichkeiten, wie wir mit dem ActionListener verfahren.

ActionListener der Klasse implementieren


public class Servicedealer_gui extends JFrame
        implements ActionListener, KeyListener, DocumentListener,
        ItemListener
Die Klasse Servicedealer_gui verwendet hier unter anderm das Interface Actionlistener, welches mit implements eingebunden wurde. Bei dieser Art befindet sich die Methode dann direkt in unserer aktuellen Klasse.

  @Override
  public void actionPerformed(ActionEvent e) 
  {

  }
Das Bedienelement wird in dieser Variante wie folgt zugewiesen.

    bt_DrueckMichButton.addActionListener(this);
Wie weiß unsere Methode actionPerformed allerdings, welche ActionEvent ausgelöst wurde? Dies geschieht durch den Parameter ActionEvent, welcher den Bezeichner e hat. (Der Bezeichner ist frei wählbar)

Dieses ActionEvent-Objekt e verfügt über eine Methode getSource(), welche aus der Klasse EventObject abgeleitet ist. Durch getSource lässt sich prüfen, welches Bedienelement die Methode aufgerufen hat.

    if (e.getSource() == bt_DrueckMichButton)
    {
        System.out.println("Button wurde gedrückt");
    }

ActionListener als anonyme innere Klasse

Mit dieser Variante packen wir alles in eine Anweisung. Wir übergeben dem Bedienelement einen neuen ActionListener als anonyme innere Klasse. Das hieraus resultierende Konstrukt sieht wie folgt aus.

    bt_ustCalculate.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) { 
      calculateUst();
      }});   
Hier wird dem Button als Parameter die anonyme Klasse, mit der überschriebenen Methode actionPerformed, übergeben.

Lambdas

Seit Java 8 werden auch einige Lambdas in Java akzeptiert, wie unter anderem bei der Zuweisung von Action-Listener. Diese verkürzte Form mit der anonymen Funktion sieht dann wie folgt aus.

    bt_ustCalculate.addActionListener((ActionEvent e) -> { 
      calculateUst();
    });    
nach oben Java4Beginners -- Seitenversion 1.0 -- Stand: 2017-07-10