public class UndoManager extends CompoundEdit implements UndoableEditListener
UndoManager управляет списком UndoableEdits, обеспечение способа отменить или восстановить соответствующие редактирования. Есть два способа добавить редактирования к UndoManager. Добавьте редактирование, непосредственно используя addEdit метод, или добавляют UndoManager к бобу, который поддерживает UndoableEditListener. Следующие примеры создают UndoManager и добавляет это как UndoableEditListener к a JTextField: UndoManager undoManager = new UndoManager(); JTextField tf = ...; tf.getDocument().addUndoableEditListener(undoManager);
UndoManager поддерживает упорядоченный список редактирований и индексирования следующего редактирования в том списке. Индексирование следующего редактирования является или размером текущего списка редактирований, или если undo был вызван это соответствует индексированию последнего существенного редактирования, которое было отменено. Когда undo вызывается все редактирования от индексирования следующего редактирования к последнему существенному редактированию отменяются в обратном порядке. Например, рассмотрите UndoManager состоя из следующих редактирований: b c Д. Эдитс с прописной буквой полужирным является существенным, те в нижнем регистре и выделенный курсивом являются незначащими.
|
| Рисунок 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, этот class ориентирован на многопотоковое исполнение.
Предупреждение: Сериализированные объекты этого class не будут совместимыми с будущими выпусками Swing. Текущая поддержка сериализации является подходящей для краткосрочного хранения или RMI между приложениями, выполняющими ту же самую версию Swing. С 1.4, поддержка длительного хранения всего JavaBeansTM была добавлена к java.beans пакет. Пожалуйста, см. XMLEncoder.
редактированияRedoName, UndoName| Конструктор и Описание |
|---|
UndoManager()
Создает новое
UndoManager. |
| Модификатор и Тип | Метод и Описание |
|---|---|
boolean |
addEdit(UndoableEdit anEdit)
Добавляет
UndoableEdit к этому UndoManager, если это возможно. |
boolean |
canRedo()
Возвращает true, если редактирования могут быть сделаны заново.
|
boolean |
canUndo()
Возвращает true, если редактирования могут быть отменены.
|
boolean |
canUndoOrRedo()
Возвращает true, если возможно вызвать
undo или redo. |
void |
discardAllEdits()
Освобождает менеджера по отмене, отправляющего каждое редактирование a
die сообщение в процессе. |
protected UndoableEdit |
editToBeRedone()
Возвращает следующее существенное редактирование, которое будет сделано заново если
redo вызывается. |
protected UndoableEdit |
editToBeUndone()
Возвращает следующее существенное редактирование, которое будет отменено если
undo вызывается. |
void |
end()
Повороты это
UndoManager в нормальное CompoundEdit. |
int |
getLimit()
Возвращает максимальное количество редактирований это
UndoManager содержит. |
Строка |
getRedoPresentationName()
Возвращает описание перевыполнимой формы этого редактирования.
|
Строка |
getUndoOrRedoPresentationName()
Метод удобства, который возвращается также
getUndoPresentationName или getRedoPresentationName. |
Строка |
getUndoPresentationName()
Возвращает описание невыполнимой формы этого редактирования.
|
void |
redo()
Делает заново соответствующие редактирования.
|
protected void |
redoTo(UndoableEdit edit)
Делает заново все изменения от индексирования следующего редактирования к
edit, обновление индексирования следующего редактирования соответственно. |
void |
setLimit(int l)
Устанавливает максимальное количество редактирований это
UndoManager содержит. |
Строка |
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, обновление индексирования следующего редактирования соответственно. |
die, getPresentationName, isInProgress, isSignificant, lastEditreplaceEditpublic int getLimit()
UndoManager содержит. Значение меньше чем 0 указывают на число редактирований, не ограничивается.UndoManager содержитaddEdit(javax.swing.undo.UndoableEdit), setLimit(int)public void discardAllEdits()
die сообщение в процессе.AbstractUndoableEdit.die()protected void trimForLimit()
protected void trimEdits(int from,
int to)
die вызванный на них и удаляются из списка редактирований. Это не имеет никакого эффекта если from > to.from - минимум индексирует, чтобы удалитьto - максимум индексирует, чтобы удалитьpublic void setLimit(int l)
UndoManager содержит. Значение меньше чем 0 указывают на число редактирований, не ограничивается. Если редактирования должны быть отброшены, чтобы уменьшить предел, die будет вызван на них в обратном порядке, они были добавлены. Значение по умолчанию 100.l - новый пределRuntimeException - если это UndoManager не происходит (end был вызван),CompoundEdit.isInProgress(), end(), addEdit(javax.swing.undo.UndoableEdit), getLimit()protected UndoableEdit editToBeUndone()
undo вызывается. Это возвращается null если нет никаких редактирований, которые будут отменены.protected UndoableEdit editToBeRedone()
redo вызывается. Это возвращается null если нет никаких редактирований, которые будут сделаны заново.protected void undoTo(UndoableEdit edit) throws CannotUndoException
edit, обновление индексирования следующего редактирования соответственно.CannotUndoException - если один из бросков редактирований CannotUndoExceptionprotected void redoTo(UndoableEdit edit) throws CannotRedoException
edit, обновление индексирования следующего редактирования соответственно.CannotRedoException - если один из бросков редактирований CannotRedoExceptionpublic void undoOrRedo()
throws CannotRedoException,
CannotUndoException
undo или redo. Если какие-либо редактирования были отменены (индексирование следующего редактирования является меньше чем длина списка редактирований), это вызывает redo, иначе это вызывает undo.CannotUndoException - если один из бросков редактирований CannotUndoExceptionCannotRedoException - если один из бросков редактирований CannotRedoExceptioncanUndoOrRedo(), getUndoOrRedoPresentationName()public boolean canUndoOrRedo()
undo или redo.canUndoOrRedo допустимоundoOrRedo()public void undo()
throws CannotUndoException
end был вызван это вызывает через к суперклассу, иначе это вызывает undo на всех редактированиях между индексированием следующего редактирования и последнем существенном редактировании, обновляя индексирование следующего редактирования соответственно.undo в интерфейсе UndoableEditundo в class CompoundEditCannotUndoException - если один из бросков редактирований CannotUndoException или нет никаких редактирований, которые будут отмененыCompoundEdit.end(), canUndo(), editToBeUndone()public boolean canUndo()
end был вызван, это возвращает значение из супер. Иначе это возвращает true, если есть какие-либо редактирования, которые будут отменены (editToBeUndone возвраты не -null).canUndo в интерфейсе UndoableEditcanUndo в class CompoundEditCompoundEdit.canUndo(), editToBeUndone()public void redo()
throws CannotRedoException
end был вызван это вызывает через к суперклассу. Иначе это вызывает redo на всех редактированиях между индексированием следующего редактирования и следующем существенном редактировании, обновляя индексирование следующего редактирования соответственно.redo в интерфейсе UndoableEditredo в class CompoundEditCannotRedoException - если один из бросков редактирований CannotRedoException или нет никаких редактирований, которые будут сделаны зановоCompoundEdit.end(), canRedo(), editToBeRedone()public boolean canRedo()
end был вызван, это возвращает значение из супер. Иначе, это возвращает true, если есть какие-либо редактирования, которые будут сделаны заново (editToBeRedone возвраты не -null).canRedo в интерфейсе UndoableEditcanRedo в class CompoundEditCompoundEdit.canRedo(), editToBeRedone()public boolean addEdit(UndoableEdit anEdit)
UndoableEdit к этому UndoManager, если это возможно. Это удаляет все редактирования из индексирования следующего редактирования до конца списка редактирований. Если end был вызван редактирование не добавляется и false возвращается. Если end не был вызван это возвращается true.addEdit в интерфейсе UndoableEditaddEdit в class CompoundEditanEdit - редактирование, которое будет добавленоanEdit может быть включен в это редактированиеCompoundEdit.end(), CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)public void end()
UndoManager в нормальное CompoundEdit. Это удаляет все редактирования, которые были отменены.end в class CompoundEditCompoundEdit.end()public String getUndoOrRedoPresentationName()
getUndoPresentationName или getRedoPresentationName. Если индексирование следующего редактирования равняется размеру списка редактирований, getUndoPresentationName возвращается, иначе getRedoPresentationName возвращается.public String getUndoPresentationName()
end был вызван это вызывает в супер. Иначе, если есть редактирования, которые будут отменены, это возвращает значение из следующего существенного редактирования, которое будет отменено. Если нет никаких редактирований, которые будут отменены и end не был вызван это возвращает значение из UIManager свойство "AbstractUndoableEdit.undoText".getUndoPresentationName в интерфейсе UndoableEditgetUndoPresentationName в class CompoundEditundo(), CompoundEdit.getUndoPresentationName()public String getRedoPresentationName()
end был вызван это вызывает в супер. Иначе, если есть редактирования, которые будут сделаны заново, это возвращает значение из следующего существенного редактирования, которое будет сделано заново. Если нет никаких редактирований, которые будут сделаны заново и end не был вызван это возвращает значение из UIManager свойство "AbstractUndoableEdit.redoText".getRedoPresentationName в интерфейсе UndoableEditgetRedoPresentationName в class CompoundEditredo(), CompoundEdit.getRedoPresentationName()public void undoableEditHappened(UndoableEditEvent e)
UndoableEditListener метод. Это вызывает addEdit с e.getEdit().undoableEditHappened в интерфейсе UndoableEditListenere - UndoableEditEvent UndoableEditEvent будет добавлен отaddEdit(javax.swing.undo.UndoableEdit)public String toString()
toString в class CompoundEdit
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92