内部类中的Java KeyListener不';由于某种原因,我没能参加这次活动

内部类中的Java KeyListener不';由于某种原因,我没能参加这次活动,java,swing,keylistener,Java,Swing,Keylistener,我有一个嵌套了KeyListener类的类,但事件似乎没有注册。我对Java非常陌生,所以我可能做了一些完全错误的事情 代码如下: public class CaesarFrame extends JFrame{ ... private JTextField jtf1 = new JTextField(20); ... jtf1.addKeyListener(this.new InputFieldKeyListener())

我有一个嵌套了KeyListener类的类,但事件似乎没有注册。我对Java非常陌生,所以我可能做了一些完全错误的事情

代码如下:

    public class CaesarFrame extends JFrame{
        ...
        private JTextField jtf1 = new JTextField(20);
        ...
        jtf1.addKeyListener(this.new InputFieldKeyListener());
        ...
        class InputFieldKeyListener extends KeyAdapter{
                public void keyTyped(KeyEvent e) {
                    System.out.println(e.toString());
                }
        }
    }

谢谢你的帮助

添加
keylister
时是否需要
this.new…
?你能试着略去这个吗?,只是放上:

jtf1.addKeyListener(new InputFieldKeyListener());
此外,不确定您正试图精确地执行什么,但请确保您使用了正确的事件。您的JTextField可能正在生成
keyPressed
keyreased
事件,而您认为它将是
keyTyped


我将以与
keyTyped
相同的方式覆盖这两个附加事件,并查看您得到的输出。这可能就是它的全部内容。

添加
键侦听器时,是否需要
这个新的…
?你能试着略去这个吗?
,只是放上:

jtf1.addKeyListener(new InputFieldKeyListener());
此外,不确定您正试图精确地执行什么,但请确保您使用了正确的事件。您的JTextField可能正在生成
keyPressed
keyreased
事件,而您认为它将是
keyTyped


我将以与
keyTyped
相同的方式覆盖这两个附加事件,并查看您得到的输出。这可能就是它的全部内容。

要触发键盘事件,组件必须具有键盘焦点。或者,考虑键绑定,在.

中可以找到键盘事件的例子,一个组件必须有键盘焦点。另一方面,考虑键绑定,在.

中可以找到例子,谢谢你的建议!另外两个事件也不会触发,省略
this
似乎不会改变它。我有一个JButton,里面有一个类似声明的ActionListener,它工作得很好,所以有点奇怪,但我必须忽略一些…(1)在添加KeyListener的行之后,如果调用
System.out.println(jtf1.getKeyListeners().length)
它是否打印了
0
以外的内容,和/或您是否得到NullPointerException?(2) 添加KeyListener后,您是否意外地重新声明了
jtf1
,从而创建了一个新对象,其中包含一组空的KeyListener?谢谢您的建议!另外两个事件也不会触发,省略
this
似乎不会改变它。我有一个JButton,里面有一个类似声明的ActionListener,它工作得很好,所以有点奇怪,但我必须忽略一些…(1)在添加KeyListener的行之后,如果调用
System.out.println(jtf1.getKeyListeners().length)
它是否打印了
0
以外的内容,和/或您是否得到NullPointerException?(2) 添加KeyListener后,您是否意外地重新声明了
jtf1
,从而创建了一个新对象,其中包含一组空的KeyListener?4行代码对我们没有帮助。发布您的SSCCE以演示问题。worksforme-问题隐藏在点的后面:-)4行代码对我们没有帮助。发布你的SSCCE,演示问题。工作表单-问题隐藏在点的后面:-)