2017-05-30 1 views
2

Ich kann nicht den Unterschied zwischen den 2 Schnittstellen zu verstehen scheinen. Warum kann MouseAdapter nicht wie MouseListener implementiert werden und kann nur erweitert werden? Ich bin ziemlich neu in Java.Unterschied zwischen MouseListener und MouseAdapter in Java

In Anbetracht wir wollen eine Aktion ausführen, die mit entweder dieser 2 Schnittstellen durchgeführt werden kann.

Auch, wenn es klug wäre, den einen zu verwenden und wenn der andere?

+1

Einfache Google Foo hätte Ihnen die Antwort gesagt. Mein google foo zeigt [das] (https://blogs.oracle.com/corejavatechtips/listeners-vs-adapters) – SomeDude

+0

So ein Maushörer ist eine Schnittstelle. Das heißt, es hat keinen Inhalt. Eine Schnittstelle ist eine Grundstruktur. Es enthält nur Methodennamen. Also, Java sieht, Sie implementieren MouseListener, was bedeutet, müssen Sie seine Methoden haben, wie freigegeben, so dass sie von AWT/swing – user7185318

Antwort

2

MouseListener ist ein Interface und MouseAdapter ist eine Implementierung davon. Sie können den MouseAdapter an jedem Ort verwenden, an dem Sie einen MouseListener verwenden.

Aber Implementierungen haben Details, die aufgenommen werden müssen.

Lesen Sie die Javadocs vor zu entscheiden.

MouseListener MouseAdapter

+0

aufgerufen werden kann Also das würde bedeuten, dass Mouse Adapter ist keine Schnittstelle, sondern eine Methode? –

0

MouseAdapter implementiert MouseListener bereits. Der Vorteil bei der Verwendung von MouseAdapter ist, dass Sie nicht alles definieren müssen, zu dem MouseListener Sie zwingt. Es ist einfach eine benutzerfreundliche Sache.

Wenn Sie nicht jede Methode von MouseListener definieren müssen, ist es in Ordnung, MouseAdapter zu verwenden.

MouseAdapter enthält nur die leeren Definitionen, die Sie überschreiben können.

1

Mouselistener ist nur dann bevorzugt, wenn Sie alle abstrakten Methoden sonst Mouseadapter die bevorzugte Wahl ist außer Kraft gesetzt.

2

Ich kann nicht scheinen, den Unterschied zwischen den 2 Schnittstellen zu verstehen. Warum kann nicht wie Mouseadapter Mouselistener implementiert werden und kann nur

MouseAdapter implementiert MouseListener erweitert werden.

Mouseadapter:

Eine abstrakte Adapterklasse für Mausereignisse zu empfangen. Die Methoden in dieser Klasse sind leer. Diese Klasse existiert als Zweck zum Erstellen von Listener-Objekten. erweitern diese Klasse eine Mouseevent (einschließlich Drag-and-motion events) oder/und MouseWheelEvent Zuhörer zu schaffen und die Methoden für die Ereignisse von Interesse

In Abwesenheit von MouseAdapter außer Kraft setzen, wenn Sie MouseListener implementieren, müssen Sie die Umsetzung zur Verfügung zu stellen zu allen diesen Schnittstellenmethoden.

mouseClicked(MouseEvent e) 
mouseDragged(MouseEvent e) 
mouseEntered(MouseEvent e) 
mouseExited(MouseEvent e) 
mouseMoved(MouseEvent e) 
mousePressed(MouseEvent e) 
mouseReleased(MouseEvent e) 
mouseWheelMoved(MouseWheelEvent e) 

wenn wäre es klug, die ein und wenn die andere zu benutzen?

Wenn Sie die obigen 8 Methoden implementieren möchten, implementieren Sie MouseListener.Wenn Sie nur für einige dieser 8 Methoden eine Implementierung bereitstellen möchten, verwenden Sie MouseAdapter und überschreiben Sie nur die für Sie interessanten Methoden.

z.B. Wenn Sie nur ein Ereignis (oder wenige Ereignisse) wie mouseClicked(MouseEvent e) Ereignis implementieren möchten, verwenden Sie am besten MouseAdapter. Wenn Sie in diesem Fall die Schnittstelle MouseListener implementieren, müssen Sie eine leere Implementierung für andere Methoden bereitstellen, die Sie nicht implementieren möchten.

+0

Danke. Ich verstehe anscheinend, wie diese Schnittstelle jetzt funktioniert :) Vielen Dank für die gründliche Erklärung! –

Verwandte Themen