Интерфейс UndoableEdit
- Все известные реализующие классы:
-
AbstractDocument.DefaultDocumentEvent,AbstractDocument.ElementEdit,AbstractUndoableEdit,CompoundEdit,DefaultStyledDocument.AttributeUndoableEdit,StateEdit,UndoManager
public interface UndoableEdit
UndoableEdit представляет собой изменение. Изменение можно отменить, а если оно уже отменено, то можно повторить. UndoableEdit предназначен для использования с UndoManager. Поскольку UndoableEdit генерируются UndoableEditListener, они обычно добавляются в UndoManager. Когда UndoableEdit добавляется в UndoManager, происходит следующее (предполагая, что end не был вызван для UndoManager):
- Если
UndoManagerсодержит изменения, он вызоветaddEditдля текущего изменения, передавая новое изменение в качестве аргумента. ЕслиaddEditвернёт true, новое изменение считается включённым в текущее изменение, и новое изменение не будет добавлено в список текущих изменений. Изменения могут использоватьaddEditв качестве способа включения мелких изменений в более крупное изменение и обработки их как единого изменения. - Если
addEditвернёт false,replaceEditвызывается для нового изменения с текущим изменением в качестве аргумента. Это обратная операция кaddEdit— если новое изменение вернёт true изreplaceEdit, новое изменение заменит текущее изменение.
UndoManager использует isSignificant для определения того, сколько изменений нужно отменить или повторить. UndoManager отменит или повторит все несущественные изменения (isSignificant возвращает false) между текущим изменением и последним или следующим существенным изменением. addEdit и replaceEdit могут использоваться для обработки нескольких изменений как одного изменения, а возврат false из isSignificant позволяет отменять или повторять сразу множество мелких изменений. Аналогичную функциональность можно реализовать с помощью метода addEdit.Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addEdit |
Добавляет UndoableEdit в этот UndoableEdit. |
boolean |
canRedo() |
Возвращает true, если это изменение можно повторить. |
boolean |
canUndo() |
Возвращает true, если это изменение можно отменить. |
void |
die() |
Сообщает изменению, что оно больше не должно использоваться. |
String |
getPresentationName() |
Возвращает локализованное, удобочитаемое описание этого изменения, подходящее для использования в журнале изменений, например. |
String |
getRedoPresentationName() |
Возвращает локализованное, удобочитаемое описание повторяемого вида этого изменения, подходящее для использования в пункте меню «Повторить», например. |
String |
getUndoPresentationName() |
Возвращает локализованное, удобочитаемое описание отменяемого вида этого изменения, подходящее для использования в пункте меню «Отменить», например. |
boolean |
isSignificant() |
Возвращает true, если это изменение считается существенным. |
void |
redo() |
Применяет изменение повторно. |
boolean |
replaceEdit |
Возвращает true, если это UndoableEdit должно заменить anEdit. |
void |
undo() |
Отменяет изменение. |
Подробное описание методов
undo
void undo() throws CannotUndoException
- Исключения:
-
CannotUndoException- если это изменение нельзя отменить
canUndo
boolean canUndo()
- Возвращаемое значение:
- true, если это изменение можно отменить
redo
void redo() throws CannotRedoException
- Исключения:
-
CannotRedoException- если это изменение нельзя повторить
canRedo
boolean canRedo()
- Возвращаемое значение:
- true, если это изменение можно повторить
die
void die()
UndoableEdit помечен как «мёртвый», его нельзя отменить или повторить. Этот метод полезен для очистки состояния, больше не требуемого после того, как отмена или повторение стали невозможными — например, для удаления файлов, используемых объектами, которые больше нельзя восстановить. UndoManager вызывает его перед удалением изменений из очереди.
Обратите внимание, что это односторонняя операция. Метода «оживить» нет.
- См. также:
addEdit
boolean addEdit(UndoableEdit anEdit)
UndoableEdit в этот UndoableEdit. Этот метод можно использовать для объединения меньших изменений в одно более крупное составное изменение. Например, текстовые редакторы обычно позволяют выполнять операции отмены для слов или предложений. Текстовый редактор может генерировать изменения при каждом нажатии клавиши, но разрешить объединение этих изменений в более удобные для пользователя единицы, такие как слова. В этом случае, UndoableEdit будет переопределять addEdit для возврата true, когда изменения можно объединить. Значение true указывает, что anEdit было включено в это изменение. Значение false указывает, что anEdit не может быть включено в это изменение.
Обычно получатель уже находится в очереди UndoManager (или другого UndoableEditListener) и получает шанс включить anEdit вместо того, чтобы позволить добавить его в очередь.
Если возвращено значение true, то в дальнейшем anEdit должен возвращать false для canUndo и canRedo, и должен выбросить соответствующее исключение при вызове undo или redo.
- Параметры:
-
anEdit- добавляемое изменение - Возвращаемое значение:
- true, если
anEditможет быть включено в это изменение
replaceEdit
boolean replaceEdit(UndoableEdit anEdit)
UndoableEdit должно заменить anEdit. Этот метод используется CompoundEdit и UndoManager; он вызывается, если anEdit не может быть добавлен к текущему изменению (addEdit возвращает false). Этот метод предоставляет способ замены существующего изменения другим.
Это сообщение противоположно addEdit — anEdit обычно уже помещен в очередь UndoManager (или другом UndoableEditListener), и получатель получает возможность заменить его.
Если возвращено значение true, то в дальнейшем anEdit должен возвращать false для canUndo() и canRedo(), и должен выбросить соответствующее исключение при вызове undo() или redo().
- Параметры:
-
anEdit- изменение, которое заменяет текущее изменение - Возвращаемое значение:
- true, если это изменение должно заменить
anEdit
isSignificant
boolean isSignificant()
UndoManager отменяет или повторяет все несущественные изменения до следующего существенного изменения.- Возвращаемое значение:
- true, если это изменение существенное
getPresentationName
String getPresentationName()
- Возвращаемое значение:
- описание этого изменения
getUndoPresentationName
String getUndoPresentationName()
getPresentationName.- Возвращаемое значение:
- описание отменяемого вида этого изменения
getRedoPresentationName
String getRedoPresentationName()
getPresentationName.- Возвращаемое значение:
- описание повторяемого вида этого изменения
© 1993, 2023, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/21/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html