繁体   English   中英

ActionListener和KeyListener错误

[英]ActionListener and KeyListener Error

我正在制作一个扩展JFrame并实现ActionListenerKeyListener的类(称为Play )。 此类不包含main()方法,因为该类具有不同的类。

我收到一个错误,指出“类Play必须声明为抽象,或者在KeyListener实现抽象方法keyReleased(KeyEvent) ”。

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.geom.Ellipse2D;

public class Play extends JFrame implements ActionListener, KeyListener {
    Timer timer = new Timer(5, this);
    double x = 0, y = 0, velx = 0, vely = 0;

    public Play() {
        timer.start();
        addKeyListener(this);
        setFocusable(true);
        setFocusTraversalKeysEnabled(false);
    }

    public void paint(Graphics g) {
        super.paint(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.fill(new Ellipse2D.Double(x, y, 40, 40));
    }

    public void actionPreformed(ActionEvent e) {
        repaint();
        x += velx;
        y += vely;
    }

    public void up() {
        vely = -1.5;
        velx = 0;
    }

    public void down() {
        vely = 1.5;
        velx = 0;
    }

    public void left() {
        vely = 0;
        velx = -1.5;
    }

    public void right() {
        vely = 0;
        velx = 1.5;
    }

    public void keyPressed(KeyEvent e) {
        int code = e.getKeyCode();

        if (code == KeyEvent.VK_UP) {
            up();
        }

        if (code == KeyEvent.VK_DOWN) {
            down();
        }

        if (code == KeyEvent.VK_LEFT) {
            left();
        }

        if (code == KeyEvent.VK_RIGHT) {
            right();
        }
    }

public void keyReleased(KeyEvent e) {
}

    public void keyTyped(KeyEvent e) {
    }
}

好吧,按它说的做。 由于要继承KeyListener接口,因此必须实现该接口的所有方法,包括“ keyReleased”

KeyListener必须实现所有方法。

只需将此方法添加到类中,它就可以工作

@Override
public void keyReleased(KeyEvent e) {

}

您还必须Override所有KeyListener实现的方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM