【发布时间】:2010-01-26 02:03:43
【问题描述】:
在键入键(包括此字符)后获取 TextArea 值的最佳方法是什么?
如果我在偶数侦听器中执行此操作,textarea.getText() 返回的值没有最终的新字符。
基本上我看到了两种方式:
使用 invokeLater() 之类的方法推迟处理。我更喜欢没有线程的解决方案。
根据插入符号的位置找出将字符放入文本的位置。
还有其他更简单的吗?
谢谢。
编辑:这就是我所拥有的:
JTextArea textarea = (JTextArea) evt.getComponent();
String texySource = textarea.getText();
char keyCode = evt.getKeyChar();
//if( Character.isLetterOrDigit( keyCode ) || Character.isSpaceChar( keyCode ) )
if( keyCode >= 0x20 || keyCode == 0x0A || keyCode == 0x0D ){
// TODO: The carret doesn't have to be at the end...
//texySource += Character.toString( evt.getKeyChar() );
String ch = Character.toString( evt.getKeyChar() );
texySource = StringUtils.overlay(texySource, ch,
textarea.getSelectionStart(),
textarea.getSelectionStart() );
}
【问题讨论】:
-
查看stackoverflow.com/questions/1252698/… 了解一些可能的见解。
-
你到底想达到什么目的?
-
我想获取包含字符(用户刚刚输入)的文本。
-
您想只为“键入的键”专门获取它 - 还是要添加任何文本 - 例如,复制粘贴到文本区域? - 如果是第二个,您可以使用@shemnon 的 DocumentListener 示例,而无需使用所有“武装/解除武装”线程内容。
标签: java swing events textarea