SwingJava事件。getKeyCode错误
所以我在做这个游戏。这是一个至今仍在弹跳的球。但我想给游戏添加一点紫色。所以我添加了这个垫子,我希望用户能够四处移动。我四处搜索,找不到一个如何使用keyevents的好例子。不管怎样,这是我的密码
import java.awt.*;
import javax.swing.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.EventQueue;
public class MainFrame extends JPanel implements Runnable {
int diaPad = 120;
long delay = 20;
private int xx = 120;
private int yy = 670;
private int dxx = 6;
protected void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(Color.BLACK);
g.fillRect(xx,yy,120,15);
}
public void run() {
while(isVisible()) {
try {
Thread.sleep(delay);
} catch(InterruptedException e) {
System.out.println("interrupted");
}
repaint();
}
}
public void movePadRight() {
if(xx + dxx < 0 || xx + diaPad + dxx > getWidth()) {
dxx *= -1;
}
xx += dxx;
}
public void movePadLeft(){
if(xx + dxx < 0 || xx + diaPad + dxx > getWidth()) {
dxx *= -1;
}
xx -= dxx;
}
public void keyBoard(KeyEvent e){
if (event.getKeyCode() == KeyEvent.VK_LEFT) {
movePadLeft();
}
if (event.getKeyCode() == KeyEvent.VK_RIGHT) {
movePadRight();
}
}
}
我在代码中没有看到任何错误,但是当我编译程序时,我得到了这个
主机。java:79:找不到符号 符号:可变事件 地点:class大型机 if(event.getKeyCode()==KeyEvent。(右){ ^
# 1 楼答案
您的KeyEvent变量是“e”而不是“event”。变量名不正确
# 2 楼答案
KeyEvent
变量被定义为e
注意:在Swing中使用key bindings来处理键交互。关键侦听器需要关注组件才能工作。它们是为旧的AWT图形库设计的,并不真正适合Swing
# 3 楼答案
您正在以
e
的形式接收事件这个变量来自方法参数
将其更改为
event
,这比简单的e
可读性更强