JTextPane и отмена изменения стиля менеджера - PullRequest
0 голосов
/ 04 февраля 2019

Моя ситуация : у меня есть JTextPane с собственной подсветкой синтаксиса.Я установил его так, чтобы, когда пользователь прекращает печатать, он обновляет стиль в тексте с помощью метода setCharacterAttributes ().

Моя проблема : Когда эти обновления стиля не выполняются, менеджер отмены работает должным образом.Но когда я его использую, менеджер отмены считает эти изменения стиля фактическими отменяемыми действиями!Это означает, что нажатие Ctrl + z (я должен отменить его при нажатии) это просто не окрашивает последний набранный мной символ.Вместо того, чтобы фактически удалить / отменить его.

Как бы получить его, чтобы отмена и повторное изменение влияло только на изменения текста, а не на изменение стиля / шрифта в моем StyledDocument ?

Спасибо.

1 Ответ

0 голосов
/ 04 февраля 2019

Похоже, вам нужно использовать атрибут addEdit или Significant, как указано в UndoManager:

UndoManager использует isSignificant, чтобы определить, сколько правок следует изменитьбыть отмененным или переделанным. UndoManager отменит или отменит все незначительные правки (isSignificant возвращает false) между текущим и последним или следующим значимым редактированием .addEdit и replaceEdit могут использоваться для обработки нескольких правок как одного правки, возвращая false из isSignificant позволяет обрабатывать, чтобы иметь возможность отменить или переделать множество мелких правок одновременно.Подобную функциональность также можно выполнить с помощью метода addEdit.

Источники: https://docs.oracle.com/javase/8/docs/api/javax/swing/undo/UndoableEdit.html

...