【发布时间】:2015-02-02 17:56:28
【问题描述】:
我正在使用JPanel 和Graphics 来制作游戏。我已经实现了一个KeyListener,并将它添加到我的JPanel。但是,我无法让它读取键码。我添加了一个打印语句,我认为只要按下一个键就会打印出来,但我按下的所有键都没有返回代码。这是我的JPanel 构造函数:
public Game()
{
super();
JPanel mazepanel = new JPanel();
this.add(mazepanel);
this.setVisible(true);
this.addMouseListener(this);
this.addKeyListener(this);
}
这是我的KeyListener。
public void keyTyped(KeyEvent kb)
{
System.out.println("Key pressed: " + kb.getKeyCode());
if (kb.getKeyCode() == KeyEvent.VK_UP)
{
forward = true;
}
else if (kb.getKeyCode() == KeyEvent.VK_LEFT)
{
left = true;
}
else if (kb.getKeyCode() == KeyEvent.VK_RIGHT)
{
right = true;
}
else if (kb.getKeyCode() == KeyEvent.VK_DOWN)
{
back = true;
}
else
{
}
this.repaint();
}
【问题讨论】:
-
改用
keyPressed或keyReleased。 -
我都试过了,都没有做任何事情。
-
这个 JPanel 也必须有焦点。如果你想避免焦点问题,你可以改用键绑定。
-
Game是一个JPanel,在main方法中添加到我的frame中。
标签: java swing user-interface keyboard