Java 为什么我不能添加密钥侦听器?
我正试图在我的程序中使用Java 为什么我不能添加密钥侦听器?,java,keylistener,Java,Keylistener,我正试图在我的程序中使用keylister。 我已将该类添加到我的主类中: class CustomKeyListener implements KeyListener{ @Override public void keyTyped(KeyEvent k) {} @Override public void keyPressed(KeyEvent k) {} @Override public void keyReleased(KeyEvent k
keylister
。
我已将该类添加到我的主类中:
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())
方法。
我错过了什么
根据我以前的经验,我知道它只适用于图形界面。我是否应该添加一些任意形式,它就可以工作
有人能解释一下这个问题吗?您的主类是否实现/扩展了一个实际支持您尝试使用的方法的类 关于你的主要职业是什么以及你想要达到什么的一些背景。 这可能是你需要的扫描仪吗? 如果是这样的话,那么看看这里,学习如何使用它。 这也可能有帮助:
您的类应该具有
addKeyListener
方法。如果您的类是从Component或JComponent派生的,则会出现这种情况。因此,您应该从这些类中的任何一个派生类,如下所示:
class MyClass extends JComponent
注意,继承不必是直接的;如果您的类是从(例如)JFrame派生的,那么它会间接继承addKeyListener
方法,因为JFrame本身是从组件派生的
此外,正如在的答案中所指出的,您的类应该是可聚焦的,以便关键的侦听器工作
更新
您在试图使用的评论中写道
this.addKeyListener( new CustomKeyListener( ) );
并且得到了错误
无法在静态上下文中使用此选项
发生这种情况是因为您调用的是静态方法(本例中是main
方法)。此
引用类的当前实例。在静态方法中,没有实例——这实际上是静态方法的定义
您应该做的是创建一个实例:
MyClass newInstance = new MyClass( );
现在,您可以将密钥侦听器添加到该实例:
MyClass newInstance = new MyClass( );
您还可以在实例方法(任何没有关键字static
的方法)中执行此操作,并从实例中调用该方法
官方Java教程中有更多关于这个主题的内容。您想将KeyListener添加到什么中?“一些仲裁形式”听起来不太合适。如果您想这样做,您需要构建希望用户看到和使用的图形用户界面。@OleV.V。我是唯一的用户。我只想添加这个keylistener,这样我就能够捕捉到任何按键操作,从而停止一些循环过程。就是这样。如果您要向“this”添加KeyListener,那么该类必须扩展JComponent(JFrame、JDialog等),否则它将无法工作。我怀疑您只是试图解决编译问题,这是做错了。你需要了解你正在开发什么,以及你正在将密钥侦听器添加到哪个用户界面元素(在屏幕上可见)。我已经尝试了
Scanner
方法,但没有成功。我是否也应该将实现KeyListener
添加到我的主类中?几乎<代码>无法访问MyClass类型的封闭实例。必须使用MyClass类型的封闭实例(例如x.new A(),其中x是MyClass的实例)来限定分配。按照您所说的做了,现在我得到了这个错误。MyClass现在是我的主类,在主类之外有CustomKeyListener
可能是最容易的。一旦你有了更多的经验,就可以学习内部类。或者按照错误消息的建议执行:addKeyListener(MyClass.new CustomKeyListener())
。