Java,将@Override用于具有不同参数的方法时出错?

时间:2017-03-21 02:06:28

标签: java intellij-idea override mouselistener

当我点击鼠标时,我试图调用方法doMouse这就是我想出的。我试过ge.addMouseListener但IntelliJ根本不喜欢这个。我目前在UI.MouseListener cannot apply java.awt.event.MouseAdapter时出错。如果有人能解释为什么会这样,我怎么能让它工作,我会很感激。

import ecs100;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

public class GUIExercise{

    public static void main(String[] arguments){
        GUIExercise  ge = new GUIExercise();
        UI.setMouseListener(new MouseAdapter(){
            @Override // error here fixed
            public void mouseClicked(MouseEvent e){
                doMouse( "", e.getX(), e.getY());
            }
        });

        UI.println("Select a .JPG file from the Choose file button.");
        UI.println("Click the mouse in the graphics pane to paste the image");
    }
}

2 个答案:

答案 0 :(得分:2)

您正在尝试覆盖不存在的方法,因此注释正常工作(并有助于防止更难以调试运行时问题)。你想要MouseAdapter.mouseClicked(MouseEvent)

@Override
public void mouseClicked(MouseEvent e) {
    doMouse("", e.getX(), e.getY());
}

答案 1 :(得分:0)

您可以在其子类中override基类的行为。

子类中添加的任何新方法都不是基类的行为,因此添加override注释会给出编译时错误。

在您的情况下,您有MouseAdapter的匿名子类。方法的名称和签名(用于鼠标单击)是

public void mouseClicked(MouseEvent e)

你的情况是mouseClick(名称中缺少ed,所以就像你在子类中添加了一个单独的新方法一样)。因此,当您将override注释添加到另一个单独的新方法时,IDE会通过给出编译时错误来告诉您相同的内容。