8 Adapterklassen versus Schnittstellen

Submitted by javafrage on Sat, 01/05/2013 - 13:44
  1. Welche Vorteile haben die Swing-Adapterklassen im Vergleich zu den Schnittstellen die Sie implementieren?
  2. 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());
}
}

 

Anonymous (not verified)

Sun, 04/28/2013 - 11:06

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 { ... } .