我的情况:我有一个 JTextPane ,其语法高亮显示。我设置了它,以便当用户停止键入时,它使用setCharacterAttributes()方法更新文本中的样式。
我的问题:如果未对样式进行这些更新,则撤消管理器将按预期工作。但是当我使用它时,撤消管理器会将那些样式更改视为实际的可撤消操作!意思是按Ctrl + z (我必须按下该键才能撤消),它只是使我输入的最后一个字符不上色。而不是实际删除/撤消它。
我怎么得到它,所以撤消和重做只会影响文本更改,而不会影响我的 StyledDocument 中的样式/字体更改?
谢谢。
答案 0 :(得分:0)
听起来您需要使用addEdit
或Significant
属性,如UndoManager
所述:
UndoManager利用isSignificant确定多少次编辑 应该撤消或重做。 UndoManager将撤消或重做全部 无关紧要的修改(isSignificant返回false) 当前修改以及上一个或下一个重要修改。 addEdit和 replaceEdit可用于将多个编辑视为单个编辑, 从isSignificant返回false可以进行处理 一次撤消或重做许多较小的修改。类似 功能也可以使用addEdit方法完成。
来源: https://docs.oracle.com/javase/8/docs/api/javax/swing/undo/UndoableEdit.html