Класс UndoManager
- Все реализуемые интерфейсы:
-
Serializable,EventListener,UndoableEditListener,UndoableEdit
public class UndoManager extends CompoundEdit implements UndoableEditListener
UndoManager управляет списком UndoableEdits, предоставляя способ отмены или повтора соответствующих правок. Существуют два способа добавления правок в UndoManager. Добавить правку напрямую, используя метод addEdit, или добавить UndoManager в компонент, поддерживающий UndoableEditListener. Следующие примеры создают UndoManager и добавляют его как UndoableEditListener в JTextField: UndoManager undoManager = new UndoManager(); JTextField tf = ...; tf.getDocument().addUndoableEditListener(undoManager);
UndoManager поддерживает упорядоченный список правок и индекс следующей правки в этом списке. Индекс следующей правки — это либо размер текущего списка правок, либо, если был вызван метод undo, он соответствует индексу последней значимой правки, которая была отменена. Когда вызывается undo, все правки от индекса следующей правки до последней значимой правки отменяются в обратном порядке. Например, рассмотрим UndoManager, состоящий из следующих правок: A b c D. Правки с заглавными буквами в жирном шрифте — значимые, а правки в нижнем регистре и курсивом — незначимые.
| |
| Рисунок 1 |
Как показано на рисунке 1, если D только что была добавлена, индекс следующей правки будет 4. Вызов undo приводит к вызову undo для D и установлению индекса следующей правки в 3 (правка c), как показано на следующем рисунке.
| |
| Рисунок 2 |
Последняя значимая правка — A, поэтому повторный вызов undo снова вызывает undo для c, b и A в этом порядке, устанавливая индекс следующей правки в 0, как показано на следующем рисунке.
| |
| Рисунок 3 |
Вызов redo приводит к вызову redo для всех правок между индексом следующей правки и следующей значимой правкой (или концом списка). Продолжая предыдущий пример, если был вызван redo, redo был бы вызван для A, b и c. Кроме того, индекс следующей правки установлен в 3 (как показано на рисунке 2).
Добавление правки в UndoManager приводит к удалению всех правок от индекса следующей правки до конца списка. Продолжая предыдущий пример, если добавлена новая правка e, правка D удаляется из списка (после вызова die для неё). Если c не включена следующей правкой (c.addEdit(e) возвращает true) или заменена ею (e.replaceEdit(c) возвращает true), новая правка добавляется после c, как показано на следующем рисунке.
| |
| Рисунок 4 |
После вызова end для UndoManager используется поведение суперкласса для всех методов UndoableEdit. Для получения более подробной информации о его поведении обратитесь к CompoundEdit.
В отличие от остальной части Swing, этот класс потокобезопасен.
Предупреждение: Сериализованные объекты этого класса не будут совместимы с будущими версиями Swing. Текущая поддержка сериализации подходит для краткосрочного хранения или RMI между приложениями, использующими одну и ту же версию Swing. С версии 1.4 добавлена поддержка долгосрочного хранения всех JavaBeans в пакет java.beans. См. XMLEncoder.
Краткое описание полей
Поля, объявленные в классе javax.swing.undo.CompoundEdit
edits
Поля, объявленные в классе javax.swing.undo.AbstractUndoableEdit
RedoName, UndoName
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
UndoManager() |
Создает новый UndoManager. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
addEdit |
Добавляет UndoableEdit в этот UndoManager, если это возможно. |
boolean |
canRedo() |
Возвращает true, если правки можно повторить. |
boolean |
canUndo() |
Возвращает true, если правки можно отменить. |
boolean |
canUndoOrRedo() |
Возвращает true, если можно вызвать undo или redo. |
void |
discardAllEdits() |
Очищает менеджер отмены, отправляя каждой правке сообщение die в процессе. |
protected UndoableEdit |
editToBeRedone() |
Возвращает следующую значимую правку, которая будет повторена, если вызван redo. |
protected UndoableEdit |
editToBeUndone() |
Возвращает следующую значимую правку, которая будет отменена, если вызван undo. |
void |
end() |
Преобразует этот UndoManager в обычную CompoundEdit. |
int |
getLimit() |
Возвращает максимальное количество правок, хранимых этим UndoManager. |
String |
getRedoPresentationName() |
Возвращает описание повторяемой формы этой правки. |
String |
getUndoOrRedoPresentationName() |
Удобный метод, который возвращает либо getUndoPresentationName или getRedoPresentationName. |
String |
getUndoPresentationName() |
Возвращает описание отменяемой формы этой правки. |
void |
redo() |
Повторяет соответствующие правки. |
protected void |
redoTo |
Повторяет все изменения от индекса следующей правки до edit, обновляя индекс следующей правки соответственно. |
void |
setLimit |
Устанавливает максимальное количество правок, хранимых этим UndoManager. |
String |
toString() |
Возвращает строку, отображающую и идентифицирующую свойства этого объекта. |
protected void |
trimEdits |
Удаляет правки в указанном диапазоне. |
protected void |
trimForLimit() |
Уменьшает количество очередей правок до диапазона размера ограничения, центрированного на индексе следующей правки. |
void |
undo() |
Отменяет соответствующие правки. |
void |
undoableEditHappened |
Метод UndoableEditListener. |
void |
undoOrRedo() |
Удобный метод, вызывающий один из undo или redo. |
protected void |
undoTo |
Отменяет все изменения от индекса следующей правки до edit, обновляя индекс следующей правки соответственно. |
Методы, объявленные в классе javax.swing.undo.CompoundEdit
die, getPresentationName, isInProgress, isSignificant, lastEdit
Методы, объявленные в классе javax.swing.undo.AbstractUndoableEdit
replaceEdit
Подробное описание конструкторов
UndoManager
public UndoManager()
UndoManager. Подробное описание методов
getLimit
public int getLimit()
UndoManager. Значение меньше 0 указывает, что количество правок не ограничено.- Возвращает:
- максимальное количество правок, которые хранит этот
UndoManager - См. также:
discardAllEdits
public void discardAllEdits()
die в процессе.- См. также:
trimForLimit
protected void trimForLimit()
trimEdits
protected void trimEdits(int from, int to)
die и будут удалены из списка правок. Это не оказывает никакого влияния, если from > to.- Параметры:
-
from- минимальный индекс для удаления -
to- максимальный индекс для удаления
setLimit
public void setLimit(int l)
UndoManager. Значение меньше 0 указывает, что количество правок не ограничено. Если необходимо отбросить правки для уменьшения предела, die будет вызвана для них в обратном порядке добавления. По умолчанию значение равно 100.- Параметры:
-
l- новый предел - Исключения:
-
RuntimeException- если этотUndoManagerне находится в процессе (endбыл вызван) - См. также:
editToBeUndone
protected UndoableEdit editToBeUndone()
undo будет вызван. Возвращает null, если нет правок для отмены.- Возвращает:
- следующую значимую правку для отмены
editToBeRedone
protected UndoableEdit editToBeRedone()
redo будет вызван. Возвращает null, если нет правок для повторного выполнения.- Возвращает:
- следующую значимую правку для повторного выполнения
undoTo
protected void undoTo(UndoableEdit edit) throws CannotUndoException
edit, обновляя индекс следующей правки соответствующим образом.- Параметры:
-
edit- правка для отмены до - Исключения:
-
CannotUndoException- если одна из правок выброситCannotUndoException
redoTo
protected void redoTo(UndoableEdit edit) throws CannotRedoException
edit, обновляя индекс следующей правки соответствующим образом.- Параметры:
-
edit- правка для повторного выполнения до - Исключения:
-
CannotRedoException- если одна из правок выброситCannotRedoException
undoOrRedo
public void undoOrRedo() throws CannotRedoException, CannotUndoException
undo или redo. Если какие-либо правки были отменены (индекс следующей правки меньше длины списка правок), вызывается redo, в противном случае вызывается undo. - Исключения:
-
CannotUndoException- если одна из правок выброситCannotUndoException -
CannotRedoException- если одна из правок выброситCannotRedoException - См. также:
canUndoOrRedo
public boolean canUndoOrRedo()
undo или redo. - Возвращает:
- true, если вызов
canUndoOrRedoдопустим - См. также:
undo
public void undo() throws CannotUndoException
end был вызван, это вызов суперкласса, в противном случае это вызов undo для всех правок между индексом следующей правки и последней значимой правкой, обновляя индекс следующей правки соответствующим образом.- Задано:
-
undoв интерфейсеUndoableEdit - Переопределяет:
-
undoв классеCompoundEdit - Исключения:
-
CannotUndoException- если одна из правок выброситCannotUndoExceptionили нет правок для отмены - См. также:
canUndo
public boolean canUndo()
end был вызван, возвращает значение от super. В противном случае возвращает true, если есть какие-либо правки для отмены (editToBeUndone возвращает не-null).- Задано:
-
canUndoв интерфейсеUndoableEdit - Переопределяет:
-
canUndoв классеCompoundEdit - Возвращает:
- true, если есть правки для отмены
- См. также:
redo
public void redo() throws CannotRedoException
end был вызван, это вызов суперкласса. В противном случае это вызов redo для всех правок между индексом следующей правки и следующей значимой правкой, обновляя индекс следующей правки соответствующим образом.- Задано:
-
redoв интерфейсеUndoableEdit - Переопределяет:
-
redoв классеCompoundEdit - Исключения:
-
CannotRedoException- если одна из правок выброситCannotRedoExceptionили нет правок для повторного выполнения - См. также:
canRedo
public boolean canRedo()
end был вызван, это возвращает значение от super. В противном случае это возвращает true, если есть какие-либо правки для повторного выполнения (editToBeRedone возвращает не-null).- Задано:
-
canRedoв интерфейсеUndoableEdit - Переопределяет:
-
canRedoв классеCompoundEdit - Возвращает:
- true, если есть правки для повторного выполнения
- См. также:
addEdit
public boolean addEdit(UndoableEdit anEdit)
UndoableEdit в этот UndoManager, если это возможно. Удаляет все правки от индекса следующей правки до конца списка правок. Если end был вызван, правка не добавляется и возвращается false. Если end не был вызван, возвращается true.- Задано:
-
addEditв интерфейсеUndoableEdit - Переопределяет:
-
addEditв классеCompoundEdit - Параметры:
-
anEdit- правка для добавления - Возвращает:
- true, если
anEditможет быть включена в эту правку - См. также:
end
public void end()
UndoManager в обычную CompoundEdit. Это удаляет все отменённые правки.- Переопределяет:
-
endв классеCompoundEdit - См. также:
getUndoOrRedoPresentationName
public String getUndoOrRedoPresentationName()
getUndoPresentationName , либо getRedoPresentationName. Если индекс следующего редактирования равен размеру списка изменений, возвращается getUndoPresentationName, в противном случае возвращается getRedoPresentationName.- Возвращает:
- название отмены или повтора
getUndoPresentationName
public String getUndoPresentationName()
end был вызван, вызывается метод суперкласса. В противном случае, если есть изменения, которые нужно отменить, возвращается значение из следующего значимого изменения, которое будет отменено. Если нет изменений для отмены и end не был вызван, возвращается значение из свойства UIManager "AbstractUndoableEdit.undoText".- Определено в:
-
getUndoPresentationNameв интерфейсеUndoableEdit - Переопределяет:
-
getUndoPresentationNameв классеCompoundEdit - Возвращает:
- описание отменяемого действия
- См. также:
getRedoPresentationName
public String getRedoPresentationName()
end был вызван, вызывается метод суперкласса. В противном случае, если есть изменения, которые нужно повторить, возвращается значение из следующего значимого изменения, которое будет повторено. Если нет изменений для повтора и end не был вызван, возвращается значение из свойства UIManager "AbstractUndoableEdit.redoText".- Определено в:
-
getRedoPresentationNameв интерфейсеUndoableEdit - Переопределяет:
-
getRedoPresentationNameв классеCompoundEdit - Возвращает:
- описание действия, которое можно повторить
- См. также:
undoableEditHappened
public void undoableEditHappened(UndoableEditEvent e)
UndoableEditListener. Вызывает addEdit с e.getEdit().- Определено в:
-
undoableEditHappenedв интерфейсеUndoableEditListener - Параметры:
-
e- событие, из которого изменения будут добавлены - См. также:
toString
public String toString()
- Переопределяет:
-
toStringв классеCompoundEdit - Возвращает:
- строковое представление этого объекта
© 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/UndoManager.html