我是程序设计的初学者,我一直在从事一个名为Tetris的著名小游戏,而我遇到了这个小问题,希望您能为我提供解决方案。我导入了:import java.awt.event.KeyAdapter
import java.awt.event.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;

    }
  }

最佳答案

您应该避免使用KeyListener,因为它们有很多与焦点相关的问题,它们还会使您的代码膨胀,并使管理更加困难。

相反,您应该利用Key Bindings API,它提供了更可重用的API,并提供了确定组件接收关键事件所需的焦点级别的方法。

07-24 09:31