8 Adapterklassen versus Schnittstellen
8 Adapterklassen versus Schnittstellen- 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());
}
}
- 4915 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.