Java中MouseListener和MouseAdapter的区别

时间:2017-05-30 17:41:33

标签: java mouselistener

我似乎无法理解2个接口之间的差异。为什么MouseAdapter不能像MouseListener一样实现,只能扩展?我对Java很新。

考虑到我们要执行可以使用这两个界面的 完成的操作。

此外,什么时候使用一个和另一个是明智的?

4 个答案:

答案 0 :(得分:3)

只有在覆盖所有抽象方法时才首选MouseListener,否则MouseAdapter是首选。

答案 1 :(得分:3)

  

我似乎无法理解2个接口之间的区别。为什么MouseAdapter不能像MouseListener一样实现,只能扩展

MouseAdapter实施MouseListener

<强> MouseAdapter

  

用于接收鼠标事件的抽象适配器类。此类中的方法为空。此类存在是为了创建侦听器对象的便利。   扩展此类以创建MouseEvent(包括拖动和运动事件)或/和MouseWheelEvent侦听器并覆盖感兴趣事件的方法

如果没有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)
  

什么时候使用那个和另一个是明智的?

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

e.g。如果您只对实施mouseClicked(MouseEvent e)事件等一个事件(或少数事件)感兴趣,最好使用MouseAdapter。如果在这种情况下实现MouseListener接口,则必须为其他方法提供空白实现,这些方法不会实现。

答案 2 :(得分:2)

MouseListener是一个接口,MouseAdapter是它的一个实现。您可以在使用MouseListener的每个位置使用MouseAdapter。

但是实现有详细信息需要考虑。

在决定之前阅读javadocs。

MouseListener MouseAdapter

答案 3 :(得分:1)

MouseAdapter已经实现了MouseListener。使用MouseAdapter的优势在于您无需定义MouseListener强制您使用的所有内容。这只是一个易用的东西。

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

MouseAdapter只包含您要覆盖的空定义。