Interfaces
java.awt.event.ActionListener
java.lang.Runnable
javax.swing.event.DocumentListener
Jede Klasse kann nur eine einzige Superklasse haben, aber durchaus mehrere Interfaces implementieren:
Example extends SuperExample implements Interface1, Interface2, ...
Ein Interface beinhaltet ausschließlich nur mit default deklarierte vordefinierte Methoden oder abstrakte Methoden, welche allerdings nicht (wie bei Klassen) explizit mit dem Schlüsselwort abstract deklariert werden müssen. Soll eine Klasse Example instanziierbar sein und wird ihr ein Interface mittels implements hinzugefügt, ist es notwendig, in Example alle durch dieses Interface vorgegebenen abstrakten Methoden zu implementieren. Die im Interface vordefinierten Methoden dürfen überschrieben werden.
Nachfolgend werden einige derjenigen Interfaces kurz beschrieben, die in diesem Tutorial verwendet werden:
Das Interface ActionListener ermöglicht festzulegen, dass bestimmte Ereignisse wie beispielsweise Mausklicks auf einen Button oder das Drücken einer Taste (action events) registriert werden sollen und zu definieren, was beim Auftreten solcher Ereignisse passieren soll (event handling).
Wird einer Klasse das Interface ActionListener hinzugefügt, so muss die Methode actionPerformed implementiert werden (siehe auch: Ereignistyp ActionEvent).
Wenn die Instanzen einer Klasse einen oder auch mehrere Threads starten sollen, kann dies durch die Implementierung des Interface Runnable realisiert werden. Ein Beispiel:
class Frame extends JFrame
implements Runnable {
...
Thread animation;
public void runAnimation() {
animation = new
Thread(this);
animation.start();
}
...
@Override
public void run() {
...
}
}
Wird einer Klasse das Interface Runnable hinzugefügt, so muss die parameterfreie Methode run implementiert werden.
Nach Aufruf der zu einer Instanz der Klasse Thread gehörenden Methode start wird der Anweisungsblock der Methode run abgearbeitet (→ Javaprojekt LayoutPerformer).
Sollen gewisse Dinge ausgelöst werden, nachdem eine Änderung an einem Text (z.B. am Inhalt eines Textfeldes vom Typ JTextArea) vorgenommen worden ist, dann benötigt man das Interface DocumentListener.
Wird einer Klasse das Interface DocumentListener hinzugefügt, so müssen die Methoden changedUpdate, insertUpdate, removeUpdate implementiert werden (siehe auch: Ereignistyp DocumentEvent).