![]() |
1
1
您可以拦截CHANGE编辑,并将每个编辑包裹在另一个UndoableEdit中
最终,我认为你会发现JTextPane/StyledDocument/等提供的样式机制对于这类事情来说太有限了。它很慢,占用了太多的内存,而且它基于用于跟踪文档词汇结构的相同元素树。(我想)对于用户应用样式的应用程序来说是可以的,比如文字处理器,但对于必须随着用户键入而不断更新样式的语法高亮显示程序来说则不然。
有几个基于Swing自定义实现的语法突出显示编辑器的示例
|
![]() |
2
1
您如何阻止CHANGE事件到达撤消管理器? 在CHANGE排队后,您不能立即向UndoManager发送lastEdit().die()调用吗? |
![]() |
3
1
我只能假设你是如何进行文本着色的。如果你是在StyledDocuments change character属性方法中进行的,你可以获取撤销监听器,并将其从文档中临时注销以进行该操作,然后一旦颜色更改完成,你就可以重新注册监听器。 对于你想在那里做的事情应该没问题。 希望能有所帮助 |
![]() |
4
0
我刚刚经历了这个问题。以下是我的解决方案:
它是我自定义JTextPane中的一个内部类,因此我可以在重做时修复插入符号的位置。 |