我是编程的初学者,我一直致力于一个小项目,一个名为俄罗斯方块的着名游戏,我遇到了这个小问题,我希望你能帮我解决问题。我导入了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;
}
}
答案 0 :(得分:2)
你应该避免使用KeyListener
,它们有许多与焦点相关的问题,它们也会使代码膨胀并使管理变得更加困难。
您应该利用Key Bindings API来提供更可重复使用的API,并提供确定组件获取关键事件所需的关注级别的方法
答案 1 :(得分:0)
使用KeyAdapter
代替keyAdapter
,KeyEvent
代替keyEvent
。类名区分大小写。
class TAdapter extends KeyAdapter