- Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
- Wann haben die Adapterklassen im Vergleich zu den Schnittstellen keine Vorteile für den Entwickler?
Die Antwort finden Sie hinter der nächsten Frage (URL rechts unten klicken).
| Niveau | 2 |
| Schwierigkeitsgrad | mittel |
| Zeit | 2+2 Minuten |
Antwort zu Frage 7: Swing, Implementieren einer Adapterklasse
In der folgenden Klasse wird für das JLabel text1 eine innere Klasse MyMouseListener implementiert die auf 2 Ereignisse mit Konsolenausgaben reagiert:
- Maus kommt über Komponente
- Maus verlässt die Komponente
Hierzu wird die Schnittstelle MouseListener implementiert.
Aufgabe:
- Implementieren Sie eine gleichwertige innere Klasse MyMouseAdapter für das JLabel text2.
- Spezialisieren Sie hierzu die abstrakte Klasse Swingklasse MouseAdapter die MouseListener implemeniert
- Die neue Klasse soll die gleichen Ereignisse gleich behandeln(Kopieren Sie den Methodenrumpf)
package Kurs2.K2012;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JLabel;
public class ListenerToAdapter {
public class MyMouseListener implements MouseListener {
public void mouseClicked(MouseEvent e) {}
public void mouseExited(MouseEvent e)
{ System.out.println("raus");}
public void mouseEntered(MouseEvent e)
{ System.out.println("rein");}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e){}
}
public class MyMouseAdapter extends MouseAdapter // Ab hier implementieren...
public void mouseExited(MouseEvent e)
{ System.out.println("raus");}
public void mouseEntered(MouseEvent e)
{ System.out.println("rein");}
// Ende der Implementierung
} //Ende Klasse MyMouseAdapter
public ListenerToAdapter() {
JLabel text1 = new JLabel("Label 2");
text1.addMouseListener(new MyMouseListener());
JLabel text2 = new JLabel("Label 2");
text2.addMouseListener(new MyMouseAdapter());
}
}
- Printer-friendly version
- Log in to post comments
- 4964 views
public class MyMouseAdapter
Muss die Klasse MyMouseAdapter nicht von MouseAdapter erben, um die genutzten Methoden "mouseExited" und "mouseEntered" überschreiben zu können? Also: public class MyMouseAdapter extends MouseAdapter { ... } .
Stimmt!
Danke. Wurde korrigiert.