【发布时间】:2017-04-09 04:56:43
【问题描述】:
我正在尝试为我正在编写的程序制作一个自动完成文本框。我有逻辑,但我在正确实施它时遇到了一些麻烦。首先,我使用按键侦听器进行了尝试,但该解决方案在同时处理多个按键的方式上有点奇怪。然后我尝试了更好的 DocumentListener,但由于线程问题,不允许我从 Listener 中编辑文档。我阅读了有关 DocumentFilter 的一些内容,但找不到有关如何使用它的单一指南。有没有办法用 documentListener 编辑文档?或者您会推荐 DocumentFilter,如果是,您如何使用它?
【问题讨论】:
-
您可以谨慎地编辑文档,方法是将编辑内容放在 Runnable 中并使用
SwingUtilities.invokeLater(...)将其排入事件线程,但这样做很危险。至于如何使用 DocumentFilter,这个网站上有很多这样的例子,有几个是我自己写的。只需search the site(点击链接)。 -
是的,我尝试在侦听器中使用 invokeLater,它在无限循环中运行。知道为什么会这样吗??
-
这是危险的一部分——当您更改文档时调用侦听器,如果您从侦听器内部更改文档,这可能会导致循环引用。
标签: java swing documentlistener documentfilter