我似乎无法理解2个接口之间的差异。为什么MouseAdapter不能像MouseListener一样实现,只能扩展?我对Java很新。
考虑到我们要执行可以使用这两个界面的 完成的操作。
此外,什么时候使用一个和另一个是明智的?
答案 0 :(得分:3)
只有在覆盖所有抽象方法时才首选MouseListener,否则MouseAdapter是首选。
答案 1 :(得分:3)
我似乎无法理解2个接口之间的区别。为什么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。
答案 3 :(得分:1)
MouseAdapter已经实现了MouseListener。使用MouseAdapter的优势在于您无需定义MouseListener强制您使用的所有内容。这只是一个易用的东西。
如果您不需要从MouseListener定义每个方法,那么使用MouseAdapter就完全没问题了。
MouseAdapter只包含您要覆盖的空定义。