Java 中 MouseListener 和 MouseAdapter 的区别

Difference between MouseListener and MouseAdapter in Java

我似乎无法理解这两个界面之间的区别。为什么MouseAdapter不能像MouseListener那样实现,只能扩展?我是 Java.

的新手

考虑到我们要执行的操作可以使用这 2 个接口中的 之一完成。

另外,什么时候用一个,什么时候用另一个?

MouseAdapter 已经实现了 MouseListener。使用 MouseAdapter 的好处是您不必定义 MouseListener 强制您定义的所有内容。这只是一个易于使用的东西。

如果您不需要定义 MouseListener 的每个方法,那么使用 MouseAdapter 就完全没问题了。

MouseAdapter 仅包含供您覆盖的空定义。

MouseListener 是一个接口,MouseAdapter 是它的一个实现。您可以在任何使用 MouseListener 的地方使用 MouseAdapter。

但是实现有一些细节需要考虑。

在决定之前阅读 javadoc。

MouseListener MouseAdapter

仅当您覆盖所有抽象方法时首选 MouseListener,否则 MouseAdapter 是首选。

I can't seem to understand the difference between the 2 interfaces. Why can't MouseAdapter be implemented like MouseListener and can only be extended

MouseAdapter implements MouseListener

鼠标适配器:

An abstract adapter class for receiving mouse events. The methods in this class are empty. This class exists as convenience for creating listener objects. Extend this class to create a MouseEvent (including drag and motion events) or/and MouseWheelEvent listener and override the methods for the events of interest

在没有 MouseAdapter 的情况下,如果您实现 MouseListener,则必须为所有这些接口方法提供实现。

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

when would it be wise to use the one and when the other ?

如果要实现以上8个方法,实现MouseListener。如果您只想为这 8 个方法中的某些方法提供实现,请使用 MouseAdapter 并仅覆盖您感兴趣的那些方法。

例如如果您只对实现一个事件(或几个事件)感兴趣,例如 mouseClicked(MouseEvent e) 事件,最好使用 MouseAdapter。如果您在这种情况下实现 MouseListener 接口,则必须为您不打算实现的其他方法提供空白实现。