Интерфейс UndoableEdit
- Все известные реализующие классы:
-
AbstractDocument.DefaultDocumentEvent,AbstractDocument.ElementEdit,AbstractUndoableEdit,CompoundEdit,DefaultStyledDocument.AttributeUndoableEdit,StateEdit,UndoManager
public interface 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 вызывает это перед удалением редактирований из очереди.
Обратите внимание, что это однонаправленная операция. Нет метода «un-die».
- См. также:
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, 2021, 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/17/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html