当前位置: 首页 > 知识库问答 >
问题:

在java中使用keyAdapter和keyEvent时出错

宰父德馨
2023-03-14

我是一个编程初学者,我一直在做一个小项目,著名的游戏叫做俄罗斯方块,我遇到了这个小问题,我希望你能帮助我解决这个问题。我导入了:导入java.awt.event.keyadapter导入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;

    }
  }

共有1个答案

谢胤
2023-03-14

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

相反,您应该利用键绑定API,它提供了一个更可重用的API,并提供了确定组件需要的焦点级别的方法,以便累加键事件

 类似资料:
  • 在我看来,这应该是非常简单的,现在我使用这个print语句来查看类是否真的识别按键:public class TAdapter extends KeyAdapter{public void keyPressed(KeyEvent e){tank.keyPressed(e);system.out.println(“presseddddddddddddddddddddd”);} 但是,没有输出。所以我

  • 我试着从用户那里获取一个输入,让这个程序从一些更复杂的东西开始。然而,无论我尝试什么,我都会遇到以下错误: 我在这里运行此代码: 任何帮助都非常感谢!

  • 无效的流头:0000002b at java.io.objectinPutStream.ReadStreamHeader(ObjectinPutStream.java:781)at java.io.objectinPutStream.(ObjectinPutStream.java:278)at servicerEquest.run(servicerEquest.java:24)at java.ut

  • 一个在设置了Keylistener或Keyadapter类并重写了keyPressed之后,另两个在程序中如何获得键盘响应呢?例如,假设我已经设置了Keyadapter类: 我将如何从那里开始,使它能够实际检测到它,并在我按w时显示字符串?没有任何方法,我可以在main方法中调用,使它开始检查,是吗?如果没有,JVM如何知道开始检查main中是否没有方法告诉它? 谢谢你抽出时间。

  • 介绍 (Introduction) KeyAdapter类是一个用于接收键盘事件的抽象(适配器)类。 此类的所有方法都是空的。 此类是用于创建侦听器对象的便捷类。 类声明 以下是java.awt.event.KeyAdapter类的声明: public abstract class KeyAdapter extends Object implements KeyListener

  • 介绍 (Introduction) KeyAdapter类是一个用于接收键盘事件的抽象(适配器)类。 此类的所有方法都是空的。 此类是用于创建侦听器对象的便捷类。 Class 声明 (Class Declaration) 以下是java.awt.event.KeyAdapter类的声明 - public abstract class KeyAdapter extends Object