JTextPane和撤消管理器样式更改

时间:2019-02-03 21:45:49

标签: java swing styles jtextpane styleddocument

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

我的问题:如果未对样式进行这些更新,则撤消管理器将按预期工作。但是当我使用它时,撤消管理器会将那些样式更改视为实际的可撤消操作!意思是按Ctrl + z (我必须按下该键才能撤消),它只是使我输入的最后一个字符不上色。而不是实际删除/撤消它。

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

谢谢。

1 个答案:

答案 0 :(得分:0)

听起来您需要使用addEditSignificant属性,如UndoManager所述:

  

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

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