我正在尝试编写一个支持某种着色的 JTextPane:当用户键入文本时,我正在运行一些代码,根据某种算法为文本着色。这很好用。
问题是着色操作是在撤消管理器中注册的(带有 EventType.CHANGE 的 DefaultDocumentEvent)。因此,当用户单击撤消时,着色消失。只有在第二个撤消请求时,文本本身才会回滚。
(请注意,着色算法有点慢,因此我无法在插入文本时为其着色)。
如果我试图阻止 CHANGE 事件到达撤消管理器,我会在多次撤消请求后得到一个异常:这是因为文档内容不符合 undoable-edit 对象所期望的内容。
有任何想法吗?