我正在尝试在我的程序中使用KeyListener
。
我已将此课程添加到我的主课程中:
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())
方法。
我错过了什么?
基于我之前的question我明白它只适用于图形界面。我应该添加一些任意形式,它会起作用吗?
有人能解释一下这个问题吗?
答案 0 :(得分:0)
你的主类是否实现/扩展了一个实际支持你试图使用的方法的类?
关于你的主要课程是什么以及你想要实现什么的一些背景。 它可能是您需要的扫描仪吗? 如果是这样,那么请查看这里以了解如何使用它。 http://www.tutorialspoint.com/java/util/java_util_scanner.htm
这也可能有所帮助: Java using scanner enter key pressed
答案 1 :(得分:0)
您的班级应该使用addKeyListener
方法。如果您的类派生自Component或JComponent,则会出现这种情况。所以你应该从这些类中派生出类,如下所示:
class MyClass extends JComponent
请注意,继承不必是直接的;如果您的类派生自(例如)JFrame,它会间接继承addKeyListener
方法,因为JFrame本身是从Component派生的。
另外,正如this question的答案中所指出的那样,您的课程应该可以让Key Listener工作。
<强>更新强>
您在评论中写道,您尝试使用
this.addKeyListener( new CustomKeyListener( ) );
并收到错误
不能在静态上下文中使用它
这是因为您调用了静态方法(在这种情况下为main
方法)。
this
指的是该类的当前实例。在静态方法中,没有实例 - 这实际上是静态方法的定义。
你应该做的是创建一个实例:
MyClass newInstance = new MyClass( );
现在,您可以将密钥监听器添加到该实例:
newInstance.addKeyListener( new CustomKeyListener( ) );
您也可以在实例方法(任何没有关键字static
的方法)中执行此操作,并从您的实例调用该方法。
官方Java教程在此主题上还有一些explanation。