【问题标题】:Error: WindowText is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener错误:WindowText 不是抽象的,并且不会覆盖 java.awt.event.MouseListener 中的抽象方法 mouseExited(java.awt.event.MouseEvent)
【发布时间】:2012-10-08 05:34:02
【问题描述】:

我编写了一个程序来显示一个带有标签、文本字段和按钮的窗口。当鼠标单击文本字段时,应该调用 VirtualKeyboardTest.java 程序。

import java.awt.*;
import java.awt.event.*;

class WindowText implements MouseListener
{
    public static void main(String[] args) 
    {
        Frame f=new Frame("New Window");
        f.setSize(500,300);
        f.setVisible(true);
        f.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                System.exit(0);
            }
        });
        Panel p = new Panel();
        Panel p1 = new Panel();
        Label lb = new Label("Click on textfield");
        TextField tf = new TextField(20);
        tf.addMouseListener(new MouseAdapter(){
            public void mouseClicked(MouseEvent e)
            {
                new VirtualKeyboardTest();
            }
            public void mousePressed(MouseEvent e){}
            public void mouseEntered(MouseEvent e){}
            public void mouseExited(MouseEvent e){}
            public void mouseReleased(MouseEvent e){}
        });

        p.setLayout(new FlowLayout());
        p.add(lb);
        p.add(tf);

        Button Submit=new Button("Submit");
        p.add(Submit);
        p1.add(p);
        f.add(p1,BorderLayout.CENTER);
    }
}

但是当我尝试编译这个程序时,我得到一个错误

 WindowText.java:4: WindowText is not abstract and does not override abstract method mouseExited(java.awt.event.MouseEvent) in java.awt.event.MouseListener
    class WindowText implements MouseListener
    ^
    1 error

我不明白为什么会出现这个错误,即使我已经覆盖了 MouseListener 中的每个方法。

【问题讨论】:

  • 千禧年,使用 Swing 组件而不是 AWT。

标签: java awt textfield


【解决方案1】:

你需要实现 MouseListener 的方法。

                public void mousePressed(MouseEvent e){}
                public void mouseEntered(MouseEvent e){}
                public void mouseExited(MouseEvent e){}
                public void mouseReleased(MouseEvent e){}

必须在 MouseText 中被覆盖。 但是由于您有一个匿名适配器,因此 MouseText 实现 MouseListener 似乎是多余的。

【讨论】:

  • @Gambler 您已经在 Main 中有 new MouseAdapter(){..}(匿名适配器)。而且由于您在 MouseText 中没有字段,因此在我看来您不需要实现 MouseListener。删除implement MouseListener你应该没问题。
【解决方案2】:
class WindowText implements MouseListener 

这意味着WindowTest应该为接口MouseListener中声明的每个*方法定义一个主体

错误说明很清楚:mouseExited(java.awt.event.MouseEvent) 尚未在您的课程中实现。所以,你应该实现该方法才能成功编译。

(*) 如果实现类是抽象的,它可能不会定义主体,可能会将方法标记为abstract。现在它应该由它的派生类来实现。我希望这可以清除错误语句中使用的抽象词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多