19.2 Aktionsabhorcher und Ereignisse
 
Ein Lauscher Dass ein Programm auf das Drücken eines Buttons durch eine Aktion reagieren kann, muss erst einmal sichergestellt werden, ob der Button überhaupt gedrückt wurde. Dazu benutzt man einen Lauscher, der die Überwachung unseres Programms übernimmt.
ActionListener Der Lauscher wird dadurch auf unser Button angesetzt, dass wir den Code für unser Button, der bisher aus den beiden Zeilen

rechenButton = new JButton("Fakultät[n]");
cp.add(rechenButton,BorderLayout.CENTER);

bestand, die folgende noch hinzufügt:

rechenButton.addActionListener(this);

In dem Wörtchen this drückt sich aus, dass die Klasse, deren Quellcode wir gerade bearbeiten, einen ActionListener als Lauscher bekommt.
 

weitere Veränderungen Einen Lauscher auf unser Programm ansetzen macht nur einen Sinn, wenn das Programm, im Falle des Klickens auch etwas tut, also reagiert. Dies garantiert Java durch die folgende Vorgehensweise.
Als erstes wir die Kopfzeile des Programms verändert. Sie heißt jetzt:
public class EinUndAusgabe extends JFrame implements ActionListener

Neu sind die beiden letzten Worte implements ActionListener. Ohne den Kapiteln über OOP vorgreifen zu wollen, sei soviel verraten: ActionListener ist ein sog. Interface. Ein Interface hat eine oder mehr Methoden angelegt, d.h. ihre Signatur bzw. Signaturen festgelegt, ohne sie aber zu implementieren. Es ist nun zwingend verlangt, dass ein Programm, das ein Interface implementiert, alle im Interface angelegten Methoden implementiert, durch einen Code also eine Funktionalität verleiht. In unserem Fall des Interfaces ActionListener geht es um die Methode actionPerformed(ActionEvent e). Wir müssen diese Methode also implementieren. Sobald der Lauscher eine Aktion registriert, ruft er diese Methode dann auf, wobei er ihr ein Objekt der  Klasse ActionEvent übergibt.
 

action Performed(...)
public void actionPerformed(ActionEvent e){
  String eingabe = eingabeFeld.getText();  
  int zahl1 = Integer.parseInt(eingabe);   
  long zahl2 = Mathematik.fakultaet(zahl1);
  ausgabeFeld.setText(""+zahl2);           
}                                          
oder kürzer
public void actionPerformed(ActionEvent e){
  int zahl = Integer.parseInt(eingabeFeld.getText());
  ausgabeFeld.setText(""+ Mathematik.fakultaet(zahl));
}

Wie dem Quellcode zu entnehmen ist, muss im Verzeichnis, in dem EinUndAusgabe gespeichert ist, sich auch die Klasse Mathematik.class befinden.
 

Der ganze Quellcode

Download:

EinUndAus gabe.java

Mathematik. class

Der gesamte Quellcode:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class EinUndAusgabe extends JFrame implements ActionListener{
  // Anfang Variablen
  private JTextField eingabeFeld, ausgabeFeld;
  private JButton rechenButton;
  // Ende Variablen

  public EinUndAusgabe (String title) {
    // Frame-Initialisierung
    super (title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing (WindowEvent evt) {System.exit(0);}});
    setSize(200, 100);
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());

    // Anfang Komponenten
    eingabeFeld = new JTextField("Eingabe");
    eingabeFeld.setHorizontalAlignment(eingabeFeld.RIGHT);
    cp.add(eingabeFeld,BorderLayout.NORTH);

    rechenButton = new JButton("Fakultät[n]");
    cp.add(rechenButton,BorderLayout.CENTER);
    rechenButton.addActionListener(this);

    ausgabeFeld = new JTextField();
    ausgabeFeld.setHorizontalAlignment(ausgabeFeld.RIGHT);
    cp.add(ausgabeFeld,BorderLayout.SOUTH);
    ausgabeFeld.setEditable(false);
    // Ende Komponenten

    setVisible(true);
  }

  // Anfang Ereignisprozeduren
  public void actionPerformed(ActionEvent e){
    int zahl = Integer.parseInt(eingabeFeld.getText());
    ausgabeFeld.setText(""+ Mathematik.fakultaet(zahl));
  }
  // Ende Ereignisprozeduren

  public static void main (String[] args) {
    new EinUndAusgabe("Ein- und Ausgabe");
  }
}
Ausgabe Nachdem das Programm gestartet wurde, zeigt sich zunächst das links stehende Fenster.

 


Im Eingabefenster ersetzen wir das Wort 'Eingabe' durch die Zahl 7 und...

 

 
klicken auf den Buuton mit der Aufschrift 'Fakultät[n]', sofort erscheint im Ausgabefenster der gewünschte Wert.

   

zu  

19.3 Mehrere Eingabefelder
zur Startseite www.pohlig.de  (C) MPohlig 2003