2

我的情况:我有一个带有自己的语法突出显示的JTextPane 。我设置了它,以便当用户停止输入时,它使用 setCharacterAttributes() 方法更新文本中的样式。

我的问题:当没有对样式执行这些更新时,撤消管理器按预期工作。但是当我使用它时,撤消管理器会将这些样式更改计为实际的可撤消操作!意思是按 Ctrl+z (按下时我必须撤消它)它只是取消我输入的最后一个字符的颜色。而不是实际删除/撤消它。

我怎么会得到它,所以撤消和重做只会影响文本更改,而不影响StyledDocument中的样式/字体更改?

谢谢你。

4

1 回答 1

1

听起来您需要使用addEditorSignificant解释的属性UndoManager

UndoManager 使用 isSignificant 来确定应该撤消或重做多少编辑。UndoManager 将撤消或重做当前编辑和上一个或下一个重要编辑之间的所有无关紧要的编辑(isSignificant 返回 false)。addEdit 和 replaceEdit 可用于将多个编辑视为单个编辑,从 isSignificant 返回 false 允许处理可用于一次撤消或重做许多较小的编辑。使用 addEdit 方法也可以完成类似的功能。

资料来源: https ://docs.oracle.com/javase/8/docs/api/javax/swing/undo/UndoableEdit.html

于 2019-02-04T03:23:57.263 回答