Spec-Zone.ru › OpenJDK 17

Класс UndoManager

java.lang.Object
javax.swing.undo.AbstractUndoableEdit
javax.swing.undo.CompoundEdit
javax.swing.undo.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

Как показано на рисунке 1, если D только что была добавлена, индекс следующей правки будет 4. Вызов undo приводит к вызову undo для D и установлению индекса следующей правки в 3 (правка c), как показано на следующем рисунке.

Рисунок 2
Рисунок 2

Последняя значимая правка — A, поэтому повторный вызов undo снова вызывает undo для c, b и A в этом порядке, устанавливая индекс следующей правки в 0, как показано на следующем рисунке.

Рисунок 3
Рисунок 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
Рисунок 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 anEdit)
Добавляет 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(UndoableEdit edit)
Повторяет все изменения от индекса следующей правки до edit, обновляя индекс следующей правки соответственно.
void setLimit(int l)
Устанавливает максимальное количество правок, хранимых этим UndoManager.
String toString()
Возвращает строку, отображающую и идентифицирующую свойства этого объекта.
protected void trimEdits(int from, int to)
Удаляет правки в указанном диапазоне.
protected void trimForLimit()
Уменьшает количество очередей правок до диапазона размера ограничения, центрированного на индексе следующей правки.
void undo()
Отменяет соответствующие правки.
void undoableEditHappened(UndoableEditEvent e)
Метод UndoableEditListener.
void undoOrRedo()
Удобный метод, вызывающий один из undo или redo.
protected void undoTo(UndoableEdit edit)
Отменяет все изменения от индекса следующей правки до edit, обновляя индекс следующей правки соответственно.

Методы, объявленные в классе javax.swing.undo.CompoundEdit

die, getPresentationName, isInProgress, isSignificant, lastEdit

Методы, объявленные в классе javax.swing.undo.AbstractUndoableEdit

replaceEdit

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait

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

UndoManager

public UndoManager()
Создаёт новый UndoManager.

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

getLimit

public int getLimit()
Возвращает максимальное количество правок, которые хранит этот UndoManager. Значение меньше 0 указывает, что количество правок не ограничено.
Возвращает:
максимальное количество правок, которые хранит этот UndoManager
См. также:
  • addEdit(javax.swing.undo.UndoableEdit)
  • setLimit(int)

discardAllEdits

public void discardAllEdits()
Очищает менеджер отмены, посылая каждой правке сообщение die в процессе.
См. также:
  • AbstractUndoableEdit.die()

trimForLimit

protected void trimForLimit()
Уменьшает количество ожидаемых правок до диапазона размера limit, центрированного на индексе следующей правки.

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 был вызван)
См. также:
  • CompoundEdit.isInProgress()
  • end()
  • addEdit(javax.swing.undo.UndoableEdit)
  • getLimit()

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()
  • getUndoOrRedoPresentationName()

canUndoOrRedo

public boolean canUndoOrRedo()
Возвращает true, если возможно вызвать undo или redo.
Возвращает:
true, если вызов canUndoOrRedo допустим
См. также:
  • undoOrRedo()

undo

public void undo() throws CannotUndoException
Отменяет соответствующие правки. Если end был вызван, это вызов суперкласса, в противном случае это вызов undo для всех правок между индексом следующей правки и последней значимой правкой, обновляя индекс следующей правки соответствующим образом.
Задано:
undo в интерфейсе UndoableEdit
Переопределяет:
undo в классе CompoundEdit
Исключения:
CannotUndoException - если одна из правок выбросит CannotUndoException или нет правок для отмены
См. также:
  • CompoundEdit.end()
  • canUndo()
  • editToBeUndone()

canUndo

public boolean canUndo()
Возвращает true, если правки могут быть отменены. Если end был вызван, возвращает значение от super. В противном случае возвращает true, если есть какие-либо правки для отмены (editToBeUndone возвращает не-null).
Задано:
canUndo в интерфейсе UndoableEdit
Переопределяет:
canUndo в классе CompoundEdit
Возвращает:
true, если есть правки для отмены
См. также:
  • CompoundEdit.canUndo()
  • editToBeUndone()

redo

public void redo() throws CannotRedoException
Повторно выполняет соответствующие правки. Если end был вызван, это вызов суперкласса. В противном случае это вызов redo для всех правок между индексом следующей правки и следующей значимой правкой, обновляя индекс следующей правки соответствующим образом.
Задано:
redo в интерфейсе UndoableEdit
Переопределяет:
redo в классе CompoundEdit
Исключения:
CannotRedoException - если одна из правок выбросит CannotRedoException или нет правок для повторного выполнения
См. также:
  • CompoundEdit.end()
  • canRedo()
  • editToBeRedone()

canRedo

public boolean canRedo()
Возвращает true, если правки могут быть повторены. Если end был вызван, это возвращает значение от super. В противном случае это возвращает true, если есть какие-либо правки для повторного выполнения (editToBeRedone возвращает не-null).
Задано:
canRedo в интерфейсе UndoableEdit
Переопределяет:
canRedo в классе CompoundEdit
Возвращает:
true, если есть правки для повторного выполнения
См. также:
  • CompoundEdit.canRedo()
  • editToBeRedone()

addEdit

public boolean addEdit(UndoableEdit anEdit)
Добавляет UndoableEdit в этот UndoManager, если это возможно. Удаляет все правки от индекса следующей правки до конца списка правок. Если end был вызван, правка не добавляется и возвращается false. Если end не был вызван, возвращается true.
Задано:
addEdit в интерфейсе UndoableEdit
Переопределяет:
addEdit в классе CompoundEdit
Параметры:
anEdit - правка для добавления
Возвращает:
true, если anEdit может быть включена в эту правку
См. также:
  • CompoundEdit.end()
  • CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)

end

public void end()
Превращает этот UndoManager в обычную CompoundEdit. Это удаляет все отменённые правки.
Переопределяет:
end в классе CompoundEdit
См. также:
  • CompoundEdit.end()

getUndoOrRedoPresentationName

public String getUndoOrRedoPresentationName()
Удобный метод, который возвращает либо getUndoPresentationName , либо getRedoPresentationName. Если индекс следующего редактирования равен размеру списка изменений, возвращается getUndoPresentationName, в противном случае возвращается getRedoPresentationName.
Возвращает:
название отмены или повтора

getUndoPresentationName

public String getUndoPresentationName()
Возвращает описание отменяемого действия. Если end был вызван, вызывается метод суперкласса. В противном случае, если есть изменения, которые нужно отменить, возвращается значение из следующего значимого изменения, которое будет отменено. Если нет изменений для отмены и end не был вызван, возвращается значение из свойства UIManager "AbstractUndoableEdit.undoText".
Определено в:
getUndoPresentationName в интерфейсе UndoableEdit
Переопределяет:
getUndoPresentationName в классе CompoundEdit
Возвращает:
описание отменяемого действия
См. также:
  • undo()
  • CompoundEdit.getUndoPresentationName()

getRedoPresentationName

public String getRedoPresentationName()
Возвращает описание действия, которое можно повторить. Если end был вызван, вызывается метод суперкласса. В противном случае, если есть изменения, которые нужно повторить, возвращается значение из следующего значимого изменения, которое будет повторено. Если нет изменений для повтора и end не был вызван, возвращается значение из свойства UIManager "AbstractUndoableEdit.redoText".
Определено в:
getRedoPresentationName в интерфейсе UndoableEdit
Переопределяет:
getRedoPresentationName в классе CompoundEdit
Возвращает:
описание действия, которое можно повторить
См. также:
  • redo()
  • CompoundEdit.getRedoPresentationName()

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent e)
Метод UndoableEditListener. Вызывает addEdit с e.getEdit().
Определено в:
undoableEditHappened в интерфейсе UndoableEditListener
Параметры:
e - событие, из которого изменения будут добавлены
См. также:
  • addEdit(javax.swing.undo.UndoableEdit)

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

Spec-Zone.ru

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