Je fais une classe (appelée Play
), qui s'étend JFrame
, et implémente ActionListener
et KeyListener
. Cette classe ne contient pas la méthode main()
, car il existe une classe différente pour cela.ActionListener et KeyListener Erreur
Je reçois une erreur qui stipule, « classe Play
doit soit être déclarée abstraite, ou mettre en œuvre la méthode abstraite keyReleased(KeyEvent)
dans KeyListener
».
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) {
}
}
Commencez par avoir un regard sur [Qu'est-ce qu'une interface?] (Https : //docs.oracle.com/javase/tutorial/java/concepts/interface.html), [Interfaces] (https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html), [ Comment écrire un auditeur d'action] (http://docs.oracle.com/javase/tutorial/uiswing/events/actionlistener.html) et [Comment écrire un écouteur de clé] (https://docs.oracle.com/ javase/tutoriel/uiswing/événements/clé listener.html) et – MadProgrammer
Et avant que vous posiez votre prochaine question sur mon 'KeyListener' cesse mystérieusement de fonctionner, regardez [Comment utiliser les raccourcis clavier] (http://docs.oracle.com/javase/tutorial/uiswing /misc/keybinding.html) – MadProgrammer