Spec-Zone.ru › OpenJDK 24

Интерфейс UndoableEdit

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

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

  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.
Возвращает:
описание повторяемой формы этой правки

© 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

Spec-Zone.ru

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