键入按键后获取 TextArea 值(包括该字符)的最佳方法是什么?
如果我在事件侦听器中执行此操作,textarea.getText()
返回不带最终新字符的值。
基本上我看到两种方法:
使用 invokeLater() 之类的方法推迟处理。我更喜欢没有线程的解决方案。
根据插入符号的位置确定将字符放入文本中的位置。
还有其他更简单的吗?
Thanks.
Edit:这就是我所拥有的:
您考虑过文档监听器吗?可能由打字事件武装?
class TheListener implements DocumentListener, KeyListener {
boolean armed;
void keyPressed(KeyEvent ignore) { }
void keyReleased(KeyEvent ignore) { }
void keyTyped(KeyEvent e) {
armed = true;
SwingUtilities.invokeLater(new Runnable() { public void run() {
armed = false;
}
}
void deleteUpdate(DocumentEvent e) {
changeUpdate(e);
}
void insertUpdate(DocumentEvent e) {
changeUpdate(e);
}
void changedUpdate(DocumentEvent e) {
if (armed) {
String s = ((JTextComponent)e.getSource()).getText();
//.... whatever you want to do now
}
}
}
//...
TheListener aListener = new TheListener();
textArea.addKeyListener(aListener);
textArea.getDocument().addDocumentListener(aListener);
其理论是在键入的按键上启用文档更改侦听器,然后添加 EDT 事件来解除它。文件更改将在撤防之前首先发生。一旦武装起来,您就可以假设任何文档更改在某种程度上都是由按键输入事件引起的。 (警告,我还没有编译这段代码,YMMV)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)