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, lastEdit
replaceEdit
public 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
- если один из бросков редактирований CannotUndoException
protected void redoTo(UndoableEdit edit) throws CannotRedoException
edit
, обновление индексирования следующего редактирования соответственно.CannotRedoException
- если один из бросков редактирований CannotRedoException
public void undoOrRedo() throws CannotRedoException, CannotUndoException
undo
или redo
. Если какие-либо редактирования были отменены (индексирование следующего редактирования является меньше чем длина списка редактирований), это вызывает redo
, иначе это вызывает undo
.CannotUndoException
- если один из бросков редактирований CannotUndoException
CannotRedoException
- если один из бросков редактирований CannotRedoException
canUndoOrRedo()
, getUndoOrRedoPresentationName()
public boolean canUndoOrRedo()
undo
или redo
.canUndoOrRedo
допустимоundoOrRedo()
public void undo() throws CannotUndoException
end
был вызван это вызывает через к суперклассу, иначе это вызывает undo
на всех редактированиях между индексированием следующего редактирования и последнем существенном редактировании, обновляя индексирование следующего редактирования соответственно.undo
в интерфейсе UndoableEdit
undo
в class CompoundEdit
CannotUndoException
- если один из бросков редактирований CannotUndoException
или нет никаких редактирований, которые будут отмененыCompoundEdit.end()
, canUndo()
, editToBeUndone()
public boolean canUndo()
end
был вызван, это возвращает значение из супер. Иначе это возвращает true, если есть какие-либо редактирования, которые будут отменены (editToBeUndone
возвраты не -null
).canUndo
в интерфейсе UndoableEdit
canUndo
в class CompoundEdit
CompoundEdit.canUndo()
, editToBeUndone()
public void redo() throws CannotRedoException
end
был вызван это вызывает через к суперклассу. Иначе это вызывает redo
на всех редактированиях между индексированием следующего редактирования и следующем существенном редактировании, обновляя индексирование следующего редактирования соответственно.redo
в интерфейсе UndoableEdit
redo
в class CompoundEdit
CannotRedoException
- если один из бросков редактирований CannotRedoException
или нет никаких редактирований, которые будут сделаны зановоCompoundEdit.end()
, canRedo()
, editToBeRedone()
public boolean canRedo()
end
был вызван, это возвращает значение из супер. Иначе, это возвращает true, если есть какие-либо редактирования, которые будут сделаны заново (editToBeRedone
возвраты не -null
).canRedo
в интерфейсе UndoableEdit
canRedo
в class CompoundEdit
CompoundEdit.canRedo()
, editToBeRedone()
public boolean addEdit(UndoableEdit anEdit)
UndoableEdit
к этому UndoManager
, если это возможно. Это удаляет все редактирования из индексирования следующего редактирования до конца списка редактирований. Если end
был вызван редактирование не добавляется и false
возвращается. Если end
не был вызван это возвращается true
.addEdit
в интерфейсе UndoableEdit
addEdit
в class CompoundEdit
anEdit
- редактирование, которое будет добавленоanEdit
может быть включен в это редактированиеCompoundEdit.end()
, CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)
public void end()
UndoManager
в нормальное CompoundEdit
. Это удаляет все редактирования, которые были отменены.end
в class CompoundEdit
CompoundEdit.end()
public String getUndoOrRedoPresentationName()
getUndoPresentationName
или getRedoPresentationName
. Если индексирование следующего редактирования равняется размеру списка редактирований, getUndoPresentationName
возвращается, иначе getRedoPresentationName
возвращается.public String getUndoPresentationName()
end
был вызван это вызывает в супер. Иначе, если есть редактирования, которые будут отменены, это возвращает значение из следующего существенного редактирования, которое будет отменено. Если нет никаких редактирований, которые будут отменены и end
не был вызван это возвращает значение из UIManager
свойство "AbstractUndoableEdit.undoText".getUndoPresentationName
в интерфейсе UndoableEdit
getUndoPresentationName
в class CompoundEdit
undo()
, CompoundEdit.getUndoPresentationName()
public String getRedoPresentationName()
end
был вызван это вызывает в супер. Иначе, если есть редактирования, которые будут сделаны заново, это возвращает значение из следующего существенного редактирования, которое будет сделано заново. Если нет никаких редактирований, которые будут сделаны заново и end
не был вызван это возвращает значение из UIManager
свойство "AbstractUndoableEdit.redoText".getRedoPresentationName
в интерфейсе UndoableEdit
getRedoPresentationName
в class CompoundEdit
redo()
, CompoundEdit.getRedoPresentationName()
public void undoableEditHappened(UndoableEditEvent e)
UndoableEditListener
метод. Это вызывает addEdit
с e.getEdit()
.undoableEditHappened
в интерфейсе UndoableEditListener
e
- UndoableEditEvent
UndoableEditEvent
будет добавлен отaddEdit(javax.swing.undo.UndoableEdit)
public String toString()
toString
в class CompoundEdit
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92