2013-10-10 54 views
1

我不断收到一条错误消息:java keylistener出了什么问题?

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) { 

    }  


     } 

`

+1

实现它们! – RamonBoza

回答

2

的错误说明了一切:

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

  • 您需要实现的抽象方法,因为这只是一个喜欢纠正拼写JavaBanana说。

的序列化类主要不声明类型长

  • 这是一个id,你必须包含在类,只需创建一个或谷歌的例子ID的静态最后的serialVersionUID领域

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

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

许多IDE都会照顾到这一点,甚至会为您创建方法声明,给他们一个镜头。 (我用netbeans)

+0

非常感谢你!你帮了很多忙! – Atlantis

1

你拼写法 “的keyTyped(KeyEvent的E)”,但它必须是“的keyTyped(KeyEvent e而)

的 “T” 必须大写:)

而且随着的keyPressed()方法替换您的actionPerformed方法..