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

为什么我无法添加关键侦听器?

吕翰飞
2023-03-14

我试图在程序中使用按键侦听器。我已将此类添加到我的主类中:

class CustomKeyListener implements KeyListener{
    @Override  
    public void keyTyped(KeyEvent k) {}
    @Override
    public void keyPressed(KeyEvent k) {}
    @Override
    public void keyReleased(KeyEvent k) {}    
}

但是,我无法将addKeyListener(new CustomKeyListener())方法添加到我的主类中的任何位置。我错过了什么?

根据我之前的问题,我知道它只适用于图形界面。我是否应该添加一些任意形式,这样就可以了?

有人能解释一下这个问题吗?

共有2个答案

冉永宁
2023-03-14

您的类应该具有addKeyListener方法。如果您的类是从Component或JComponent派生的,则会出现这种情况。因此,您应该从这些类中的任何一个派生类,如下所示:

class MyClass extends JComponent

请注意,继承不必是直接的;如果您的类是从(例如)JFrame派生的,那么它会间接继承addKeyListener方法,因为JFrame本身是从Component派生的。

此外,正如在这个问题的答案中指出的,您的类应该是可聚焦的,以便关键监听器工作。

使现代化

您在试图使用的评论中写道

this.addKeyListener( new CustomKeyListener( ) );

得到了错误信息

无法在静态上下文中使用此

发生这种情况的原因是您调用的是从静态方法(本例中是主方法)进行的调用
引用类的当前实例。在静态方法中,没有实例-这实际上是静态方法的定义。

您应该做的是创建一个实例:

MyClass newInstance = new MyClass( );

现在,您可以将密钥侦听器添加到该实例:

newInstance.addKeyListener( new CustomKeyListener( ) );

您也可以在实例方法中执行此操作(任何没有关键字静态的方法),并从您的实例中调用该方法。

官方Java教程对此有更多的解释。

景子安
2023-03-14

您的主类是否实现/扩展了一个实际支持您尝试使用的方法的类?

一些关于你的主要课程是什么以及你想要实现什么的上下文。这可能是你需要的扫描仪吗?如果是这样的话,那么看看这里,学习如何使用它。http://www.tutorialspoint.com/java/util/java_util_scanner.htm

此外,这可能也会有所帮助:Java使用扫描器按enter键

 类似资料:
  • 我可以在下面的代码中为添加事件侦听器,但不能添加到。 是不是因为twitter做了一些事情不让我这么做?有办法绕过它吗?

  • 问题内容: 我正在尝试为我的RadioGroup创建一个onCheckedChanged侦听器,但是日食给我带来了麻烦。这是代码 并且从eclipse出现错误,建议将其更改为setOnClickListener / setOnDragListener以及其他。 在上面告诉我要添加未实现的方法,当我选择该选项时,它会添加以下内容: 所以我最终得到了这个: 它告诉我从我编写的方法中删除注释。 有人知道

  • 我有两个屏幕..首先是闪屏,在这里我借助firebase.auth()检查用户是否已经存在。onAuthStateChanged侦听器。如果用户为空,它将转到另一个firebase.auth()的登录屏幕。onAuthStateChanged侦听器用于在电话验证后获取用户,如果用户之前未注册,则将用户移至UserDetails屏幕以获取更多用户信息,或者移至主屏幕..同样的检查也在闪屏上进行,以确

  • 问题内容: 我有一个简单的GUI: 我想打印出此消息: 当GUI关闭时(按X时)。我怎样才能做到这一点? 问题答案: 试试这个。

  • 问题内容: 我有一个ArrayList,它向其中动态添加了一些对象,并且有一个JButton。运行我的程序时ArrayList为空,并且JButton设置为setEnabled(false)。我想在ArrayList中有2个或更多元素时启用我的按钮,如果ArrayList有一项或为空则再次禁用它。我该如何实现? 问题答案: 没有任何种类的通知机制。 我建议您编写自己的实现,该实现将委托给私有的实现

  • 我的代码使用jQuery。我有一个密码输入框,我想要得到输入的密码任何时候。 下面是我的代码: 我确信这是一个正确的代码,因为当我在浏览器的控制台中输入它时,它可以工作,但当我重新加载页面时,它就不工作了 我能做什么?