【问题标题】:Autocomplete Text box with Document Listener in JavaJava中带有文档侦听器的自动完成文本框
【发布时间】:2017-04-09 04:56:43
【问题描述】:

我正在尝试为我正在编写的程序制作一个自动完成文本框。我有逻辑,但我在正确实施它时遇到了一些麻烦。首先,我使用按键侦听器进行了尝试,但该解决方案在同时处理多个按键的方式上有点奇怪。然后我尝试了更好的 DocumentListener,但由于线程问题,不允许我从 Listener 中编辑文档。我阅读了有关 DocumentFilter 的一些内容,但找不到有关如何使用它的单一指南。有没有办法用 documentListener 编辑文档?或者您会推荐 DocumentFilter,如果是,您如何使用它?

【问题讨论】:

  • 您可以谨慎地编辑文档,方法是将编辑内容放在 Runnable 中并使用SwingUtilities.invokeLater(...) 将其排入事件线程,但这样做很危险。至于如何使用 DocumentFilter,这个网站上有很多这样的例子,有几个是我自己写的。只需search the site(点击链接)。
  • 是的,我尝试在侦听器中使用 invokeLater,它在无限循环中运行。知道为什么会这样吗??
  • 这是危险的一部分——当您更改文档时调用侦听器,如果您从侦听器内部更改文档,这可能会导致循环引用。

标签: java swing documentlistener documentfilter


【解决方案1】:

DocumentListener 不应用于编辑文档。这样做需要调用 SwingUtilities.invokeLater(...) 并且由于 DocumentListener 检测到文档的更改,因此任何编辑都会导致无限循环。最好的办法是使用 DocumentFilter。

【讨论】:

    猜你喜欢
    • 2013-01-19
    • 1970-01-01
    • 2012-06-09
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多