Интерфейс UndoableEdit
- Все известные реализующие классы:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager
public interface UndoableEdit
UndoableEdit представляет собой правку. Правку можно отменить, а если она уже отменена — повторить. UndoableEdit предназначен для использования с UndoManager. Поскольку UndoableEdit создаются объектом UndoableEditListener, обычно их добавляют в UndoManager. При добавлении UndoableEdit в UndoManager происходит следующее (если для UndoManager не был вызван end):
- Если
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://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/undo/UndoableEdit.html