2014-06-25 19 views
0

我是編程的初學者,我一直在研究一個小項目,衆所周知的叫做Tetris的遊戲,我遇到了這個小問題,我希望你能幫助我解。我導入了:import java.awt.event.KeyAdapterimport java.awt.event.KeyEvent能夠使用我的鍵盤玩遊戲,但是當我擴展我創建的課程以使用密鑰時,它向我顯示錯誤!在java中使用keyAdapter和keyEvent時出錯

下面是代碼:

addKeyListener(new TAdapter()); 

錯誤發生在這裏說這樣的:

The method addKeyListener(keyListener) in the type Component is not applicable for the arguments(Board.TAdapter) 

類TAdapter擴展keyAdapter {//第二個發生在這裏:keyAdapter不能//解析爲鍵入 public void keyPressed(keyEvent e){//第三種情況發生在這裏:keyEvent //無法解析爲某個類型

 if (!isStarted || curPiece.getShape() == Tetrominoes.NoShape) { 
      return; 

     } 

     int keycode = e.getKeyCode(); 

     if (keycode == 'p' || keycode == 'P') { 
      pause(); 
      return; 

     } 
     if (isPaused) 
     {return;} 

    switch (keycode) { 
     case KeyEvent.VK_LEFT: 
      tryMove(curPiece, curX - 1, curY); 
      break; 
     case KeyEvent.VK_RIGHT: 
      tryMove(curPiece, curX + 1, curY); 
      break; 
     case KeyEvent.VK_DOWN: 
      tryMove(curPiece.rotateRight(), curX, curY); 
      break; 
     case KeyEvent.VK_UP: 
      tryMove(curPiece.rotateLeft(), curX, curY); 
      break; 
     case KeyEvent.VK_SPACE: 
      dropDown(); 
      break; 
     case 'd': 
      oneLineDown(); 
      break; 
     case 'D': 
      oneLineDown(); 
      break; 

    } 
    } 
+2

任何拼寫:不使用keyEvent/listeners。相反,使用keyBindings通過actionMap/inputMap – kleopatra

回答

0

使用KeyAdapter而不是​​和KeyEvent而不是keyEvent。類名稱區分大小寫。

class TAdapter extends KeyAdapter 
+0

我沒有注意。謝謝 – jym338

1

你應該避免KeyListener S,它們含有大量的關注有關的問題,他們也可以臃腫的代碼,使管理更加困難。

你而應,採取Key Bindings API,它提供了更可重複使用的API的優勢,並提供手段,確定重點的水平,以收到關鍵事件的組件需求