我的java代码中有一个扩展SwingWorker<Void,Void>
类的类,现在我只想扩展mouseClicked()
类的MouseAdapter
方法,但我无法扩展MouseAdapter
类因为我已经扩展了SwingWorker,有没有其他方法可以使用MouseAdapter类的mouseClicked()
方法?因为如果我将实现MouseListener,那么我将需要覆盖MouseListener的所有方法,但我只需要mouseClicked。
答案 0 :(得分:5)
提示:显示您的代码将有助于我们了解您的问题。
无论如何,从我读到的内容来看,你似乎打算做类似
的事情public MyClass extends SwingWorker<Void, Void>, MouseAdapter {
您在Java中不能拥有多重继承,因此无法使用。
您有两种选择:
制作MyClass
实施 MouseListener
界面。由于它是一个接口,因此不会被视为多重继承。您必须为所有接口方法提供实现,尽管空实现就足够了。
创建一个不同的类(可能是一个内部类)来实现鼠标监听器。它可能适合或不适合您的提议,因为您不清楚自己想做什么。
注意:一般情况下(不知道你的特殊需求),第二种方法通常会更明智,因为在多个类中定义逻辑更有可能实现“单一责任”原则(一个类做一件事,并且只有一个。)
答案 1 :(得分:4)
您似乎必须实现MouseListener的所有方法:
public class YourClass extends SwingWorker<Void,Void> implements MouseListener {
...
}
另一种选择是使用composition代替inheritance。只需在YourClass中创建扩展MouseAdapter的字段:
public class YourClass extends SwingWorker<Void, Void> {
MouseAdapter mouseAdapter = new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
// Your implementation here
}
};
...
}