类不是抽象的,不会覆盖错误

时间:2015-01-03 15:28:19

标签: mouseevent override abstract-class mouselistener

我正在尝试编写一个程序,通过在更改颜色时单击圆圈来测试反应时间,但无法使点击部分工作。我一直得到错误,我的类不是抽象的,也不会过度使用MouseListener中的方法。这是代码。

            import java.util.*;
            import java.io.*;
            import java.awt.*;
            import java.awt.event.*;
            import java.util.Random;
            import java.awt.event.MouseEvent;
            import java.awt.event.MouseListener;
            import java.awt.event.MouseMotionListener;

            public class Stopwatch
            {
                public static int windowX = 900; 
                public static int windowY = 700;

                public static void main(String args[])
                {
                    GfxApp gfx = new GfxApp();
                    gfx.setSize(900,700);
                    gfx.addWindowListener(new WindowAdapter() {public void
                    windowClosing(WindowEvent e) {System.exit(0);}});
                    gfx.show();
                }
            }

            class GfxApp extends Frame
            {
                public void paint(Graphics g) 
                {           
                    Timer.drawgreen(g);
                    Timer.pause();
                    Timer.drawred(g);

                }
            }

            class Timer
            {
                public static int circlex = 300;
                public static int circley = 200;
                public static int radius = 250;

                public static void drawgreen(Graphics g)
                {
                    g.setColor(new Color(0,255,0));
                    g.fillOval(circlex, circley, radius, radius);
                }

                public static void drawred(Graphics g)
                {
                    g.setColor(new Color(255,0,0));
                    g.fillOval(circlex, circley, radius, radius);
                }

                public static void pause()
                {
                    Random rand = new Random();

                    int k = rand.nextInt(301);

                    for(double i = 0; i < 500 + k; i += .000001)
                    {
            //                      delay
                    }
                }
            }

            class Mouse implements MouseListener
            {
                MouseListener circle = new MouseListener();

                public void MouseClicked (MouseEvent me)
                {
                }
                public void MouseEntered (MouseEvent me)
                {
                }
                public void MouseExited (MouseEvent me)
                {
                }
                public void MousePressed (MouseEvent me)
                {
                }
                public void MouseReleased (MouseEvent me)
                {
                }
            }

1 个答案:

答案 0 :(得分:0)

您的实现方法与接口的情况不匹配,因此编译器认为您的类不满足合同,并建议将此类标记为抽象。

例如,接口定义了此方法:

void mouseClicked(MouseEvent e) { }

你有:(大写M而不是低m)

void MouseClicked (MouseEvent me) { }

这一行让我感到困惑:

MouseListener circle = new MouseListener();

从我看到MouseListener是一个界面,您当然可以让左侧将类型声明为接口,但右侧必须是具体类。