【发布时间】:2017-09-06 02:48:35
【问题描述】:
我的 KeyListener 没有注册任何按键被按下,我能做些什么来解决这个问题?我曾尝试使用键码而不是 VK_DOWN 格式,但这并没有什么不同。我没有使用 jpanel..
import javax.swing.*;
import java.awt.event.*;
public class SnakeFrame extends JFrame
{
final int FRAME_WIDTH = 800;
final int FRAME_HEIGHT = 700;
private SnakeComponent scene;
class KeyPressListener implements KeyListener
{
public void keyPressed(KeyEvent e)
{
int keyCode = e.getKeyCode();
switch( keyCode ) {
case KeyEvent.VK_UP:
// handle up
System.out.println("Hello");
case KeyEvent.VK_DOWN:
// handle down
scene.a("d");
case KeyEvent.VK_LEFT:
// handle left
scene.a("l");
case KeyEvent.VK_RIGHT :
// handle right
scene.a("r");
}
KeyListener key = new KeyPressListener();
scene.addKeyListener(key);
}
public void keyReleased(KeyEvent e){}
public void keyTyped(KeyEvent e) {}
}
class TimerListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
scene.moveSnake();
scene.eaten();
scene.gameOver();
}
}
public SnakeFrame()
{
scene = new SnakeComponent();
add(scene);
setSize(FRAME_WIDTH, FRAME_HEIGHT);
KeyListener key = new KeyPressListener();
scene.addKeyListener(key);
ActionListener listener = new TimerListener();
final int DELAY = 80;
Timer t = new Timer(DELAY, listener);
t.start();
}
}
我已经尝试过 if/else 语句而不是 switch case,但这不起作用
【问题讨论】:
标签: java jframe keylistener keyevent event-listener