1

我不断收到一条错误消息:

Multiple markers at this line
    - The type Main must implement the inherited abstract method     KeyListener.keyTyped(KeyEvent)
    - The serializable class Main does not declare a static final serialVersionUID field of type     long
    - The type Main must implement the inherited abstract method     KeyListener.keyPressed(KeyEvent)

我该怎么办?

这是我的代码:(我在错误位置旁边评论)

`package drawLines;

import java.util.Date;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.applet.Applet;
    import java.awt.Color;
    import java.awt.Graphics;

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.Timer;


**/*here appears the error message*/**public class Main extends Applet implements KeyListener {

    boolean right=true;
    boolean left=false;
    boolean up=false;
    boolean down=false;
    boolean inGame=true;

    public void listen(){
        addKeyListener((KeyListener) this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);
    }

    public void actionPerformed(KeyEvent e){
        int key = e.getKeyCode();

        if (key == KeyEvent.VK_LEFT) {
            left=true;
            up=false;
            down=false;
        }

        if (key == KeyEvent.VK_RIGHT) {
            right=true;
            up=false;
            down=false;
        }

        if (key == KeyEvent.VK_UP) {
            up=true;
            right=false;
            left=false;
        }

        if (key == KeyEvent.VK_DOWN) {
            down=true;
            right=false;
            left=false;
        }


    }

    public void keytyped(KeyEvent e){}
    public void keyReleased(KeyEvent e){}




    int x1=5;
    int y1=5;
    int x2=x1+5;
    int y2=y1+5;


    public int moveRight(){
        return ++x1;
    }

    public int moveLeft(){
        return --x1;
    }

    public int moveUp(){
        return ++y1;
    }

    public int moveDown(){
        return --y1;
    }

    public void paint1(Graphics g){
        g.drawOval(x1,y1,x2,y2);
    }



    public void paint(Graphics e){

        while (right=true){
        long millis =System.currentTimeMillis();
        long millisn =System.currentTimeMillis();

            while (millisn<millis+20){
                millisn=System.currentTimeMillis();
            }

        e.setColor(Color.white);
        e.drawOval(x1,y1,x2,y2);
        e.setColor(Color.red);
        moveRight();
        e.drawOval(x1,y1,x2,y2);

        }
        while(inGame==true){
            if(right==true){
                long millis =System.currentTimeMillis();
                long millisn =System.currentTimeMillis();

                    while (millisn<millis+20){
                        millisn=System.currentTimeMillis();
                    }

                e.setColor(Color.white);
                e.drawOval(x1,y1,x2,y2);
                e.setColor(Color.red);
                moveRight();
                e.drawOval(x1,y1,x2,y2);
            }

            else if(down==true){
                    long millis =System.currentTimeMillis();
                    long millisn =System.currentTimeMillis();

                        while (millisn<millis+20){
                                    millisn=System.currentTimeMillis();
                        }

                    e.setColor(Color.white);
                    e.drawOval(x1,y1,x2,y2);
                    e.setColor(Color.red);
                    moveDown();
                    e.drawOval(x1,y1,x2,y2);

            }
                else if (left==true){
                    long millis =System.currentTimeMillis();
                    long millisn =System.currentTimeMillis();

                        while (millisn<millis+20){
                            millisn=System.currentTimeMillis();
                        }

                    e.setColor(Color.white);
                    e.drawOval(x1,y1,x2,y2);
                    e.setColor(Color.red);
                    moveLeft();
                    e.drawOval(x1,y1,x2,y2);


                    }}
    }

    public static void main(String[] args) {

    }    


        }

`

4

2 回答 2

2

错误说明了一切:

Main 类型必须实现继承的抽象方法 KeyListener.keyTyped(KeyEvent)

  • 您需要实现抽象方法,为此只需纠正 JavaBanana 所说的拼写。

可序列化类 Main 未声明 long 类型的静态最终 serialVersionUID 字段

  • 这是您必须包含在课程中的 ID,只需创建一个或在 Google 上搜索一个示例 ID

Main 类型必须实现继承的抽象方法 KeyListener.keyPressed(KeyEvent)

  • 同样,您需要实现抽象方法 keyPressed。我的意思是你必须定义和实现一个在这种情况下将被调用的方法。

许多 IDE 会处理这个问题,甚至会为您创建方法声明,试一试。(我使用netbeans)

于 2013-10-10T14:18:17.713 回答
1

您拼写了方法“keytyped(KeyEvent e)”,但它必须是“keyTyped(KeyEvent e)

“T”必须是大写的:)

并用 keyPressed() 方法替换您的 actionPerformed 方法..

于 2013-10-10T14:16:08.160 回答