Die Listener-Schnittstelle zum Empfangen „interessanter“ Mausereignisse (drücken, loslassen, klicken, eingeben und beenden) auf einer Komponente. (Um Mausbewegungen und Mausziehen zu verfolgen, verwenden Sie den MouseMotionListener.) Die Klasse, die an der Verarbeitung eines Mausereignisses interessiert ist, implementiert entweder diese Schnittstelle (und alle darin enthaltenen Methoden) oder erweitert die abstrakte MouseAdapter-Klasse (wobei nur die relevanten Methoden überschrieben werden). Das aus dieser Klasse erstellte Listener-Objekt wird dann mithilfe der Methode addMouseListener der Komponente bei einer Komponente registriert. Ein Mausereignis wird generiert, wenn die Maus gedrückt, losgelassen oder geklickt (gedrückt und losgelassen) wird. Ein Mausereignis wird auch generiert, wenn der Mauszeiger eine Komponente betritt oder verlässt. Wenn ein Mausereignis auftritt, wird die entsprechende Methode im Listener-Objekt aufgerufen und das MouseEvent an sie übergeben.
Bei den Mausereignissen unterscheiden wir zwei Arten von Ereignissen:
- Ereignisse der Maus, die einmalig von der Maus ausgelöst werden. Dazu gehören die Ereignisse, wenn die linke Maustaste gedrückt wird, wenn die gedrückte Taste losgelassen wird, wenn sich die Maus auf eine Komponente bewegt, die sich an den Mauslistener angemeldet hat oder wenn der Mauszeiger diese Komponente wieder verlässt.
- Ereignisse der Maus, die durch Bewegung der Maus permanent ausgelöst werden. Dazu gehört die Mausbewegung selbst oder auch die Bewegung der Maus bei gedrückter Taste.
Die erste Art von Mausereignissen können wir behandeln, indem wir
- den
MouseListener
implementieren und - eine Komponente (z.B. ein
JPanel
) an denMouseListener
anmelden.
Die zweite Art von Maus(-Bewegungs-)ereignissen können wir behandeln, indem wir
eine Komponente (z.B. ein JPanel
) an den MouseMotionListener
anmelden.
den MouseMotionListener
implementieren und
Um einen Action Listener zu schreiben, befolgen Sie die unten angegebenen Schritte:
Deklarieren Sie eine Event-Handler-Klasse und geben Sie an, dass die Klasse entweder eine ActionListener-Schnittstelle implementiert oder eine Klasse erweitert, die eine ActionListener-Schnittstelle implementiert. Beispiel:
public class MyClass implements ActionListener {
Registrieren Sie eine Instanz der Event-Handler-Klasse als Listener für eine oder mehrere Komponenten. Beispiel:
someComponent.addActionListener(instanceOfMyClass);
Fügen Sie Code ein, der die Methoden in der Listener-Schnittstelle implementiert. Beispiel:
public void actionPerformed(ActionEvent e) {
…//Code, der auf die Aktion reagiert…
}
Um im Allgemeinen zu erkennen, wann der Benutzer auf eine Schaltfläche auf dem Bildschirm klickt (oder das Äquivalent auf der Tastatur ausführt), muss ein Programm über ein Objekt verfügen, das die ActionListener-Schnittstelle implementiert. Das Programm muss dieses Objekt mithilfe der Methode addActionListener als Action Listener für die Schaltfläche (die Ereignisquelle) registrieren. Wenn der Benutzer auf die Schaltfläche auf dem Bildschirm klickt, löst die Schaltfläche ein Aktionsereignis aus. Dies führt zum Aufruf der Methode actionPerformed des Aktionslisteners (die einzige Methode in der Schnittstelle ActionListener). Das einzige Argument der Methode ist ein ActionEvent-Objekt, das Informationen über das Ereignis und seine Quelle liefert.
Schreiben wir ein einfaches Programm, das anzeigt, wie oft ein Benutzer auf eine Schaltfläche geklickt hat. Hier ist zunächst der Code, der die Variablen TextField, button und numClicks einrichtet:
public class AL extends Frame implements WindowListener,ActionListener {
TextField text = new TextField(20);
Button b;
private int numClicks = 0;
Im obigen Beispiel ist die Ereignishandlerklasse AL, die ActionListener implementiert.
Wir möchten das Schaltflächenklickereignis behandeln, also fügen wir der Schaltfläche b einen Aktionslistener wie folgt hinzu:
b = new Button("Click me");
b.addActionListener(this);
Im obigen Code ist Button b eine Komponente, auf der eine Instanz der Eventhandler-Klasse AL registriert ist.
Nun möchten wir den Text anzeigen, der angibt, wie oft ein Benutzer auf den Button geklickt hat. Dies können wir tun, indem wir den Code wie folgt schreiben:
public void actionPerformed(ActionEvent e) {
numClicks++;
text.setText("Button Clicked " + numClicks + " times");
Wenn der Benutzer nun auf Button b klickt, löst der Button ein Aktionsereignis aus, das die Methode actionPerformed des Aktionslisteners aufruft. Jedes Mal, wenn der Benutzer den Button drückt, wird die Variable numClicks angehängt und die Nachricht im Textfeld angezeigt.

Die Variablen frame
, button1
, text
und numClicks
wurden als Instanzvariablen deklariert, damit sie in der gesamten Klasse verfügbar sind.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Anleitungen_schreiben implements ActionListener {
private JFrame frame;
private JButton button1;
private JLabel text;
private int numClicks = 0;
public Anleitungen_schreiben() {
frame = new JFrame("Anleitungen schreiben");
frame.setSize(300, 400);
button1 = new JButton("6 fM in Maschenring");
button1.addActionListener(this);
text = new JLabel("Button noch nicht geklickt");
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
frame.add(button1);
frame.add(text);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
numClicks++;
text.setText("Button Clicked " + numClicks + " times");
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Anleitungen_schreiben();
}
});
}
}


import javax.swing.*;
public class Textfeld_erstellen
{
private static JTextField textField;
private static JTextArea eingabefeld;
public static void main(String[] args) {
JFrame Fenster = new JFrame();
eingabefeld = new JTextArea();
Fenster.add(eingabefeld);
Fenster.setSize(200,200);
Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Fenster.setVisible(true);
}
}
Mausaktionen

import java.awt.event.*;
import javax.swing.*;
public class Mausereignisse extends JFrame implements MouseListener {
public Mausereignisse(int size) {
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.addMouseListener(this);
add(panel);
setVisible(true);
}
public static void main(String[] args) {
new Mausereignisse(4);
}
public void mouseClicked(MouseEvent e) {
System.out.println("mouse clicked");
}
public void mousePressed(MouseEvent e) {
System.out.println("mouse pressed");
}
public void mouseReleased(MouseEvent e) {
System.out.println("mouse released");
}
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered");
}
public void mouseExited(MouseEvent e) {
System.out.println("mouse exited");
}
}
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isRightMouseButton(e)) {
System.out.println("Rechtsklick erkannt!");
} else if (SwingUtilities.isLeftMouseButton(e)) {
System.out.println("Linksklick erkannt!");
} else if (SwingUtilities.isMiddleMouseButton(e)) {
System.out.println("Mittlere Maustaste erkannt!");
}
}
