现在,当我向KeyListener
添加JTextField
时,我会收到一个事件,然后文本会更新。但我需要的是KeyListener
在文本更新后回复。我该怎么做呢?现在,我正在为另一个线程中KeyListener
的响应设置一个10毫秒的延迟,这足以使文本更新并且用户不会注意到。
答案 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
}
});
请注意,我不确定它为什么能工作,但我认为它与打字速度或其他因素有关,我不是专家,但我想提供帮助(这个问题使我疯狂了几天)如果我要说任何愚蠢的东西请让我知道!