Интерфейс 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, 2025, 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html