【发布时间】:2016-03-02 21:57:09
【问题描述】:
现在,当我将 KeyListener 添加到 JTextField 时,我会收到一个事件,然后文本会更新。但我需要的是KeyListener 在文本更新后响应。我该怎么做呢?现在,我在另一个线程中为KeyListener 的响应设置了 10 毫秒的延迟,这足以让文本更新并且用户不会注意到。
【问题讨论】:
标签: java swing jtextfield keylistener
现在,当我将 KeyListener 添加到 JTextField 时,我会收到一个事件,然后文本会更新。但我需要的是KeyListener 在文本更新后响应。我该怎么做呢?现在,我在另一个线程中为KeyListener 的响应设置了 10 毫秒的延迟,这足以让文本更新并且用户不会注意到。
【问题讨论】:
标签: java swing jtextfield keylistener
所以....嗯,我知道有点晚了 X)
我通过使用 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
}
});
请注意,我不确定它为什么会起作用,但我认为它与打字速度或其他东西有关,我也不是专家,但我想提供帮助(这个问题让我发疯了几天)如果我在说任何愚蠢的话,请告诉我!
【讨论】:
不要使用 KeyListener。 Swing 拥有比 AWT 更新更好的 API。
相反,您应该将DocumentListener 添加到JTextfield 的Document
每当Document 更新时,就会生成一个DocumentEvent。
阅读 How to Write a DocumentListener 上的 Swing 教程部分,了解更多信息和示例。
【讨论】:
KeyListeners 是 AWT。感谢您的回答!