我正在尝试为我的 NetBeans 模块实现 NavigatorPanel。现在,我希望在修改关联的 DataObject 时始终收到通知,以便我可以调用解析器并更新导航器。
我尝试将 PropertyChangeListener 添加到 DataObject 中,但这只会通知我对文档所做的第一次更改,仅此而已。但是,我注意到第一次调用 PropertyChangeListener.propertyChange() 方法时,propertyName 设置为“COOKIE”,第二次设置为“MODIFIED”。
当编辑器中的文档内容(而不是底层 FileObject!)发生变化时如何始终得到通知的任何想法?
编辑: 我已经看过http://wiki.netbeans.org/DevFaqListenForSaveEvents。他们指出,PropertyChangeListener 用于获取有关正在保存的文档的通知(例如,通过 Ctrl+S),如果希望收到有关内容修改的通知,则应使用 FileChangeListener。但这对我不起作用。在任何一种情况下,当我在编辑器中修改文档时,我都不会收到通知,除了使用 PropertyChangeListener 时,我确实会收到通知,但只是在我第一次编辑某些内容时(与他们在常问问题)。
EDIT2: 我还没有弄清楚如何得到正确的通知。但在我的情况下,我实际上应该从不同的角度接近我的目标,即因为我想根据解析结果更新 NavigatorPanel,我可能应该注册一个 ParserResultTask。这样我就可以定义什么时候应该收到通知,当我收到通知时,我还可以获得更新面板所需的已经解析的结果。
好吧,这不是对实际问题的直接答案,而是针对这个特定问题的更合适的解决方案。