public void keyPressed(KeyEvent e) 
   {  
       Person man=(Person)e.getSource();       // 返回事件源
       if(e.getKeyCode()==KeyEvent.VK_KP_DOWN)               // 判断是否按下了“↓”键
         { 
            goDown(man); 
         }
       if(e.getKeyCode()==KeyEvent.VK_KP_UP)               // 判断是否按下了“↑”键
        { 
            goUp(man);
        }
      if(e.getKeyCode()==KeyEvent.VK_KP_LEFT)               // 判断是否按下了“←”键
        { 
            goLeft(man);
        }
      if(e.getKeyCode()==KeyEvent.VK_KP_RIGHT)                // 判断是否按下了“→”键
       { 
           goRight(man);    
       }
   }
进入调试状态 发现keyPressed方法执行是执行了,但if后面的语句都没执行,莫非if的条件写的不对吗?应该怎么写呢?

解决方案 »

  1.   

    好像不是用 e.getKeyCode,我原来做java程序的时候也出现过,后来跟踪调试发现
    e.getKeyCode  和  KeyEvent里面的值不一样,呵呵,希望能帮到你
      

  2.   


    public void keyPressed(KeyEvent e) 
      {  
          Person man=(Person)e.getSource();      // 返回事件源
           int keyCode=e.getKeyCode(); 
          if(e.getKeyCode()==KeyEvent.VK_KP_DOWN)              // 判断是否按下了“↓”键 
            { 
                goDown(man); 
            } 
          if(e.getKeyCode()==KeyEvent.VK_KP_UP)              // 判断是否按下了“↑”键 
            { 
                goUp(man); 
            } 
          if(e.getKeyCode()==KeyEvent.VK_KP_LEFT)              // 判断是否按下了“←”键 
            { 
                goLeft(man); 
            } 
          if(keyCode==KeyEvent.VK_RIGHT)                // 判断是否按下了“→”键,static int VK_RIGHT 
              用于非数字键盘向右方向键的常量, 其他的你改一下试试。
          { 
              goRight(man);    
          } 
      } 
      

  3.   

    你可以用System.out.println(e.getKeyText(e.getKeyCode()));看看实际的按键是什么
      

  4.   

    楼主可能是没注意到KeyEvent.VK_KP_DOWN等常量都是
    public static final int类型.所以可以int keyCode=e.getKeyCode(); 
     if(keyCode==KeyEvent.VK_KP_DOWN)              // 判断是否按下了“↓”键 
     { 
           goDown(man); 
     } 
    ......
    楼主这样试一下
      

  5.   

    用nyzlhao的方法解决了,非常感谢各位,^ - ^