来自text components上的Swing教程:
您可能希望在文档侦听器中更改文档的文本。但是,您永远不应该从文档侦听器中修改文本组件的内容。如果你这样做,该程序可能会死锁。相反,您可以使用带格式的文本字段或提供文档过滤器。
我很困惑。那么改变文本的正确方法是什么,例如。作为KeyEvent的结果?
答案 0 :(得分:4)
1)使用DocumentListener
作为
从JTextComponent
输出到GUI
HightLighter
或Styled text
2)DocumentFilter
用于过滤
不受欢迎的字符,
字符序列,
这些过滤的字符可以是
替换为另一个char(或定义的字符序列)
已删除(永远不会显示在JTextComponent
)
3)提供JFormattedTextField
的similair功能可以输入JTextComponent
仅字符0 - 9
,decimal separator
,negative sing
,
4) 那么改变文本的正确方法是什么,例如。作为KeyEvent的结果?
答案 1 :(得分:3)
直接答案是使用SwingUtilities.invokeLater()
将Document
修改代码放在那里。但是mKorbel的回答(+1)涵盖了大多数你能想象到的案例。
答案 2 :(得分:2)
文字说你可能想要使用文件监听器。 Here是如何编写一个的例子。
Swing文本组件使用Document来表示其内容。 文档内容在任何文档内容发生变化时发生 方式。
因此,始终您的文本组件更改文档侦听器将触发,但文本说您无法更改此侦听器中组件的值。
在KeyListener
(不是文档侦听器)中,您可以使用setText()
更改值。
根据您的需要,我建议您查看DocumentFilter。