我们将创建一个飞机,并在用户每次输入向上箭头键时将其速度提高5mph,在按下向下键时将其速度降低9mph。假定无论完成什么操作,它都会在输出框中将此报告给用户。如何设置它,以便键听器告诉用户他们按下了向上键?我仍在处理此问题,因此很麻烦。
private class PolygonPanel implements MouseListener, MouseMotionListener, KeyListener
{
public void mousePressed(MouseEvent event){} //unused event
public void mouseDragged(MouseEvent event){} //unused event
public void keyReleased(KeyEvent event){}
public void keyTyped(KeyEvent event){}
//public void keyPressed(KeyEvent event){}
public void keyPressed(KeyEvent event) {
Integer planespeed=event.getKeyCode();
if (event.getKeyCode() == KeyEvent.VK_RIGHT)
{
//Not gonna use this.
}
if (event.getKeyCode() == 39)//KeyEvent.VK_LEFT
{
System.out.print("This key is up");
}
if (event.getKeyCode() == KeyEvent.VK_UP)
{
System.out.print("This key has been pressed");
//speed=planespeed+5;
}
if (event.getKeyCode() == KeyEvent.VK_DOWN)
{
//speed=planespeed-9;
}
repaint();
}
如果未重点关注框架,则不会检测到键盘输入。因此,为了检索任何类型的键盘输入,您必须使用构造函数中的一行,例如setFocusable(true);
,将框架设置为可聚焦的。您可能还必须添加一行,例如addKeyListener(new PolygonPanel());
,以便完全注册侦听器。