Key Listener 在 JApplet 中不起作用
Key Listener not working in JApplet
这是一款打破砖块类型的游戏,用户不能让球落到球拍下方。顺便说一下,paddle_x 是设置球拍的 x 坐标。我有一个效果很好的 MouseListener,但是 KeyListener 却不行。我想知道我做错了什么,如果有人有任何建议。
public PaintSurface() {
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
if (e.getX() - 30 - paddle_x > 5)
english = 1.5f;
else if(e.getX() - 30 - paddle_x < -5)
english = - 1.5f;
else
english = 1.0f;
paddle_x = e.getX() - 30;
}
});
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getID() == KeyEvent.KEY_TYPED){
if(e.getKeyChar() == KeyEvent.VK_RIGHT){
paddle_x += 30;
}
else if (e.getKeyChar() == KeyEvent.VK_LEFT){
paddle_x -= 30;
}
}
}
});
ball = new Ball(20);
}
已注册 KeyListener
的组件必须具有 focus
才能触发 KeyListener
。在组件上调用 requestFocus
以请求组件具有焦点,或使用 KeyBindings(推荐)
此外,keyPressed
方法有一个条件检查 ID 与 KeyEvent.KEY_TYPED
事件(永远不会发生)。
这是一款打破砖块类型的游戏,用户不能让球落到球拍下方。顺便说一下,paddle_x 是设置球拍的 x 坐标。我有一个效果很好的 MouseListener,但是 KeyListener 却不行。我想知道我做错了什么,如果有人有任何建议。
public PaintSurface() {
addMouseMotionListener(new MouseMotionAdapter()
{
public void mouseMoved(MouseEvent e)
{
if (e.getX() - 30 - paddle_x > 5)
english = 1.5f;
else if(e.getX() - 30 - paddle_x < -5)
english = - 1.5f;
else
english = 1.0f;
paddle_x = e.getX() - 30;
}
});
addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent e) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent e) {
// TODO Auto-generated method stub
if(e.getID() == KeyEvent.KEY_TYPED){
if(e.getKeyChar() == KeyEvent.VK_RIGHT){
paddle_x += 30;
}
else if (e.getKeyChar() == KeyEvent.VK_LEFT){
paddle_x -= 30;
}
}
}
});
ball = new Ball(20);
}
已注册 KeyListener
的组件必须具有 focus
才能触发 KeyListener
。在组件上调用 requestFocus
以请求组件具有焦点,或使用 KeyBindings(推荐)
此外,keyPressed
方法有一个条件检查 ID 与 KeyEvent.KEY_TYPED
事件(永远不会发生)。