在文本更新后,JTextField响应键事件

时间:2015-11-29 02:23:15

标签: java swing jtextfield keylistener

现在,当我向KeyListener添加JTextField时,我会收到一个事件,然后文本会更新。但我需要的是KeyListener在文本更新后回复。我该怎么做呢?现在,我正在为另一个线程中KeyListener的响应设置一个10毫秒的延迟,这足以使文本更新并且用户不会注意到。

2 个答案:

答案 0 :(得分:4)

不要使用KeyListener。 Swing比AWT有更新更好的API。

相反,您应该将DocumentListener添加到Document的{​​{1}}

每当JTextfield更新时,都会生成DocumentEvent

阅读How to Write a DocumentListener上Swing教程中的部分,了解更多信息和示例。

答案 1 :(得分:0)

所以...。嗯,我知道这有点晚了)

我通过使用keyReleased方法解决了这个问题,我注意到文本在键事件之前得到更新,应该会给您这样的信息

JTextField jtf = new  JTextField();
jtf.addKeyaddKeyListener(new KeyListener() {

            @Override
            public void keyTyped(KeyEvent e) {
                // not here
            }

            @Override
            public void keyReleased(KeyEvent e) {
                // not here 

            }

            @Override
            public void keyPressed(KeyEvent e) {
                //do the stuff here
            }
        });

请注意,我不确定它为什么能工作,但我认为它与打字速度或其他因素有关,我不是专家,但我想提供帮助(这个问题使我疯狂了几天)如果我要说任何愚蠢的东西请让我知道!