使用我的文本编辑器应用程序和 DocumentListener

Quirk with my text editor app and DocumentListener

我有一个 JTabbedPane。我根据具有 JTextPane 信息的 class(此处称为 textWrap)的实例化添加选项卡。我创建了一个新的侦听器实例并将其传递到 textWrap 的实例化中:

tabEditorPane.addTab( fileName, new TextEditorWrap( new MyDocumentListener() ... ...);

我的 DocumentListener 在文件更改时向选项卡添加一个星号。在我尝试将现有文件加载到文本选项卡之前,这一切似乎都没有问题。侦听器注册初始 BufferedReader 输入并添加一个星号。我该如何解决这个问题?

这件事有经验法则吗?我意识到我可以在创建 class 之后注册侦听器,至于在加载文本文件之后,但我想看看堆栈说了什么。

加载文件时,应该有这样的调用

myTextPane.getEditorKit().read(...);

或任何等效的加载方法。 您可以做的是用 4 个步骤替换此行:

  1. 删除或停用您的文档侦听器
  2. 加载你的文件
  3. 去掉星号
  4. 放回或重新激活文档侦听器。

为此,您可以扩展文本窗格并编写一个 load 方法来执行这 4 个步骤。无论如何,管理文件加载的对象需要引用您的 DocumentListener