Spec-Zone.ru › OpenJDK 25

Интерфейс UndoableEdit

Все известные реализующие классы:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager
public interface UndoableEdit
Объект UndoableEdit представляет собой правку. Правку можно отменить, а если она уже отменена — повторить.

UndoableEdit предназначен для использования с UndoManager. Поскольку UndoableEdit создаются объектом UndoableEditListener, обычно их добавляют в UndoManager. При добавлении UndoableEdit в UndoManager происходит следующее (если для UndoManager не был вызван end):

  1. Если UndoManager содержит правки, он вызывает у текущей правки addEdit, передавая новую правку в качестве аргумента. Если addEdit возвращает true, считается, что новая правка включена в текущую, и новая правка не добавляется в список текущих правок. Правки могут использовать addEdit, чтобы включать меньшие правки в более крупную и рассматривать их как одну правку.
  2. Если addEdit возвращает false, для новой правки вызывается replaceEdit, которой в качестве аргумента передаётся текущая правка. Это обратная операция по отношению к addEdit: если новая правка возвращает true из replaceEdit, она заменяет текущую правку.
UndoManager использует isSignificant, чтобы определить, сколько правок следует отменить или повторить. UndoManager отменяет или повторяет все незначительные правки (для которых isSignificant возвращает false) между текущей правкой и последней или следующей значимой правкой. addEdit и replaceEdit можно использовать, чтобы рассматривать несколько правок как одну. Возвращая false из isSignificant, можно добиться одновременной отмены или повтора множества небольших правок. Аналогичной функциональности можно добиться с помощью метода addEdit.

Краткое описание методов

Модификатор и тип Метод Описание
boolean addEdit(UndoableEdit anEdit)
Добавляет UndoableEdit к этому UndoableEdit.
boolean canRedo()
Возвращает true, если эту правку можно повторить.
boolean canUndo()
Возвращает true, если эту правку можно отменить.
void die()
Сообщает правке, что её больше не следует использовать.
String getPresentationName()
Возвращает локализованное, понятное человеку описание этой правки, подходящее, например, для журнала изменений.
String getRedoPresentationName()
Возвращает локализованное, понятное человеку описание формы этой правки, которую можно повторить, подходящее, например, для пункта меню «Повторить».
String getUndoPresentationName()
Возвращает локализованное, понятное человеку описание формы этой правки, которую можно отменить, подходящее, например, для пункта меню «Отменить».
boolean isSignificant()
Возвращает true, если эта правка считается значимой.
void redo()
Повторно применяет правку.
boolean replaceEdit(UndoableEdit anEdit)
Возвращает true, если этот UndoableEdit должен заменить anEdit.
void undo()
Отменяет правку.

Подробное описание методов

undo

void undo() throws CannotUndoException
Отменяет правку.
Вызывает исключение:
CannotUndoException — если эту правку нельзя отменить

canUndo

boolean canUndo()
Возвращает true, если эту правку можно отменить.
Возвращает:
true, если эту правку можно отменить

redo

void redo() throws CannotRedoException
Повторно применяет правку.
Вызывает исключение:
CannotRedoException — если эту правку нельзя повторить

canRedo

boolean canRedo()
Возвращает true, если эту правку можно повторить.
Возвращает:
true, если эту правку можно повторить

die

void die()
Сообщает правке, что её больше не следует использовать. После того как UndoableEdit помечен как недействительный, его больше нельзя отменить или повторить.

Этот метод полезен для очистки состояния, которое больше не требуется после того, как отмена или повтор стали невозможны, — например, для удаления файловых ресурсов, используемых объектами, которые уже нельзя восстановить. UndoManager вызывает этот метод перед извлечением правок из очереди.

Обратите внимание, что эта операция необратима. Метода «восстановления» не существует.

См. также:
  • CompoundEdit.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)
Возвращает true, если этот UndoableEdit должен заменить anEdit. Этот метод используется CompoundEdit и UndoManager; он вызывается, если anEdit не удалось добавить к текущей правке (addEdit возвращает false).

Этот метод позволяет правке заменить существующую правку.

Это сообщение противоположно addEdit: обычно anEdit уже находится в очереди UndoManager (или другого UndoableEditListener), и получателю предоставляется возможность занять её место.

Если возвращается true, с этого момента anEdit должен возвращать false из canUndo() и canRedo(), а при вызове undo() или redo() должен выбрасывать соответствующее исключение.

Параметры:
anEdit — правка, заменяющая текущую
Возвращает:
true, если эта правка должна заменить anEdit

isSignificant

boolean isSignificant()
Возвращает true, если эта правка считается значимой. Значимая правка — это, как правило, правка, которую следует представить пользователю, например в пункте меню или всплывающей подсказке. UndoManager отменяет или повторяет все незначительные правки вплоть до следующей значимой правки.
Возвращает:
true, если эта правка значима

getPresentationName

String getPresentationName()
Возвращает локализованное, понятное человеку описание этой правки, подходящее, например, для журнала изменений.
Возвращает:
описание этой правки

getUndoPresentationName

String getUndoPresentationName()
Возвращает локализованное, понятное человеку описание формы этой правки, которую можно отменить, подходящее, например, для пункта меню «Отменить». Обычно оно формируется на основе getPresentationName.
Возвращает:
описание формы этой правки, которую можно отменить

getRedoPresentationName

String getRedoPresentationName()
Возвращает локализованное, понятное человеку описание формы этой правки, которую можно повторить, подходящее, например, для пункта меню «Повторить». Обычно оно формируется на основе getPresentationName.
Возвращает:
описание формы этой правки, которую можно повторить

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в разделе Документация Java SE, содержащем более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API