JPanel未响应keylistener

JPanel未响应keylistener,keylistener,Keylistener,我试着制作一个JPanel,显示你按每个导航键的次数,但它只显示4个零 //在keyPressed()方法中,我放入了以下相应处理按键的代码: public void keyPressed(KeyEvent event) { if(event.getKeyCode()==KeyEvent.VK_LEFT) left++; else if(event.getKeyCode()==KeyEvent.VK_RIGHT) right++;

我试着制作一个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上的计数的绘制方法

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 );    
}

欢迎来到
keylister
s的精彩世界

KeyListener
s根据设计,仅当它们注册到的组件可聚焦且具有焦点时,才能响应键事件

这通常会使它们在游戏环境中成为一个糟糕的选择,在游戏环境中,您可能有许多组件可以从您的主要游戏组件中窃取焦点


相反,您应该使用

欢迎来到
KeyListener
s的精彩世界

KeyListener
s根据设计,仅当它们注册到的组件可聚焦且具有焦点时,才能响应键事件

这通常会使它们在游戏环境中成为一个糟糕的选择,在游戏环境中,您可能有许多组件可以从您的主要游戏组件中窃取焦点

相反,您应该使用

  • 调用
    repaint()keyPressed()
    方法中的code>结束

  • 调用
    count_key.setFocusable(true)在其创建下方的
    main
    方法中

由于
JPanel
无法聚焦,因此
keystener
无法工作。

  • 调用
    repaint()keyPressed()
    方法中的code>结束

  • 调用
    count_key.setFocusable(true)在其创建下方的
    main
    方法中


由于
JPanel
无法对焦,因此
keystener
不工作。

程序的执行是否进入
keyPressed
功能?程序的执行是否进入
keyPressed
功能?当另一个组件获得对焦时,
KeyListener
将停止响应…当另一个组件获得焦点时,
KeyListener
将停止响应。。。