我试图制作一个JPanel,它会显示你按下每个导航键的次数,但它只显示4个零。
//在keyPressed()方法中,我将以下代码相应地处理按键:
public void keyPressed(KeyEvent event)
{
if(event.getKeyCode()==KeyEvent.VK_LEFT)
left++;
else if(event.getKeyCode()==KeyEvent.VK_RIGHT)
right++;
else if(event.getKeyCode()==KeyEvent.VK_UP)
up++;
else if(event.getKeyCode()==KeyEvent.VK_DOWN)
down++;
}
//绘制JPanel上的计数的paint方法
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawString ( Integer.toString(left), 100, 100 );
g.drawString ( Integer.toString(right), 200, 100 );
g.drawString ( Integer.toString(up), 100, 200 );
g.drawString ( Integer.toString(down), 200, 200 );
}
答案 0 :(得分:6)
最后在repaint();
方法中致电keyPressed()
。
在count_keys.setFocusable(true);
方法下方的main
方法中调用JPanel
由于KeyListener
无法关注,因此{{1}}无效。
答案 1 :(得分:5)
欢迎来到KeyListener
的精彩世界。
KeyListener
按设计,只能在注册的组件可对焦并且具有焦点时才响应关键事件。
这通常使它们在游戏环境中成为一个糟糕的选择,在游戏环境中你可能有许多组件可以从主游戏组件中抢夺焦点。
相反,您应该使用Key bindings