簡體   English   中英

KeyListener無法運作

[英]KeyListener is not working

以下代碼不起作用。 我正在嘗試使用按鍵方法向左,向右,向上和向下移動播放器,但是當我按按鍵時它沒有響應。 我並沒有將整個代碼粘貼到移動框的那一部分,還有其他if語句來實現其他內容的移動。


public class innerClassKeyPressed {


   void  keyPressed( KeyEvent e)
   {
    int key= e.getKeyCode();
    if(key==KeyEvent.VK_LEFT){
        dx=-1;
    }
     if(key==KeyEvent.VK_RIGHT){

         dx=1;
    }
    if (key==KeyEvent.VK_UP){
        dy=-1;
    }
     if (key==KeyEvent.VK_DOWN){
        dy=1;
     }
      if (key == 82)
     {
          initLevel(currlevel);

     } //R
     if (key == 78)
     {
         currlevel++;
          initLevel(currlevel);
      } 

      if ( (key == KeyEvent.VK_LEFT ) && ( key  == KeyEvent.VK_RIGHT ) && 
      (key == KeyEvent.VK_UP ) && ( key == KeyEvent.VK_DOWN )) { 

         return;
       }


        for (int row=0; row < myArray.length; row++)

        {
            for (int column=0; column < myArray[row].length; column++)
            {
                 if( myArray[row][column]==  Contents.PLAYER)                       { 
                        if (myArray[row+dy][column+dx] == Contents.BOX)
                        {

                            if (myArray[row+dy*2][column+dx*2] == Contents.EMPTY)

                             {

                                myArray[row+dy][column+dx]= Contents.PLAYER; 
                                 myArray[row][column]= Contents.EMPTY;

                                myArray[row+dy*2][column+dx*2]= Contents.BOX;

KeyListeners器因無法正常運行而臭名昭著(實際上,它們確實在工作,只是不是您認為的那樣)。

KeyListener的問題在於,它們只會在注冊其組件的組件具有焦點並具有焦點(也稱為鍵盤焦點)時作出反應。

而是應使用按鍵綁定,因為它們允許確定觸發它們的焦點狀態。

當我猜測您使用JFrame和Canvas繪制播放器時,我還假定這沒有用,因為您尚未將KeyListener添加到JFrame中。

例如:

JFrame frame = new JFrame();
frame.addKeyListener(keylistener);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM