|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.swing.undo.AbstractUndoableEdit javax.swing.undo.CompoundEdit javax.swing.undo.UndoManager
public class UndoManager
UndoManager
は、UndoableEdit
のリストを管理し、編集結果を選択してその内容を元に戻したり再実行したりできます。UndoManager
に編集結果を追加する方法は 2 とおりあります。一つは addEdit
メソッドを使って直接編集結果を追加する方法、もう一つは UndoableEditListener
をサポートする Bean に UndoManager
を追加する方法です。次のコード例では、UndoManager
を作成し、UndoableEditListener
として JTextField
に追加することができます。
UndoManager undoManager = new UndoManager(); JTextField tf = ...; tf.getDocument().addUndoableEditListener(undoManager);
UndoManager
は、編集結果の順序付きリストと、このリスト内の次の編集結果のインデックスを管理します。次の編集結果のインデックスは、現在の編集結果のリストのサイズか、undo
が呼び出されている場合は前回取り消された重大な編集内容のインデックスになります。undo
が呼び出されると、次の編集結果のインデックスから前回の重大な編集結果までのすべての編集結果が逆順に取り消されます。たとえば、A b c D という編集結果から成る UndoManager
があるとします。アルファベットの大文字で表された編集結果 (太字) は重大な編集結果、アルファベットの小文字で表された編集結果 (斜体) は小さな編集結果です。
図 1 |
図 1 のように、D が追加された場合、次の編集結果のインデックスは 4 になります。undo
を呼び出すと、D に対して undo
が呼び出され、次の編集結果のインデックスが 3 になります (c を編集)。次の図を参照してください。
図 2 |
前回の重大な編集結果は A です。undo
を再度呼び出すと、c、b、および A に対して、この順番で undo
が呼び出され、次の編集結果のインデックスが 0 になります。次の図を参照してください。
図 3 |
redo
を呼び出すと、次の編集結果のインデックスから次の重大な編集結果 (リストの末尾) までのすべての編集結果に対して redo
が呼び出されます。先ほどの例の続きで、redo
を呼び出した場合、A、b、および c に対して、この順番で redo
が呼び出されます。また、次の編集結果のインデックスが 3 に設定されます (図 2 を参照)。
UndoManager
に編集結果を追加すると、次の編集結果のインデックスからリストの末尾までのすべての編集結果が削除されます。先ほどの例の続きで、新しい編集結果 e を追加すると、編集結果 D に対して die
が呼び出されたあと、この編集結果がリストから削除されます。c が次の編集結果に組み込まれていない場合 (c.addEdit(e)
の戻り値が true の場合)、または c が次の編集結果で置き換えられる場合 (e.replaceEdit(c)
の戻り値が true の場合)、次の図のように c の後ろに新しい編集結果が追加されます。
図 4 |
UndoManager
に対して end
が呼び出されると、すべての UndoableEdit
メソッドに対して スーパークラスの動作が適用されます。この動作の詳細については、CompoundEdit
を参照してください。
このクラスは、ほかの Swing のクラスとは異なり、スレッドに対して安全です。
警告: このクラスの直列化されたオブジェクトは、今後の Swing リリースと互換ではなくなる予定です。現在の直列化のサポートは、短期間の運用や、同じバージョンの Swing を実行するアプリケーション間の RMI に適しています。JDK Version 1.4 以降、すべての JavaBeans™ の長期間の運用サポートは、java.beans
パッケージに追加されています。詳細は、XMLEncoder
を参照してください。
フィールドの概要 |
---|
クラス javax.swing.undo.CompoundEdit から継承されたフィールド |
---|
edits |
クラス javax.swing.undo.AbstractUndoableEdit から継承されたフィールド |
---|
RedoName, UndoName |
コンストラクタの概要 | |
---|---|
UndoManager()
新しい UndoManager を作成します。 |
メソッドの概要 | |
---|---|
boolean |
addEdit(UndoableEdit anEdit)
可能であれば、この UndoManager に UndoableEdit を追加します。 |
boolean |
canRedo()
編集結果を再実行できる場合は true を返します。 |
boolean |
canUndo()
編集結果を取り消せる場合は true を返します。 |
boolean |
canUndoOrRedo()
undo または redo を呼び出せる場合は true を返します。 |
void |
discardAllEdits()
undo マネージャーを空にして、各編集結果の進行時に 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 のどちらか 1 つを呼び出す簡易メソッドです。 |
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 |
コンストラクタの詳細 |
---|
public UndoManager()
UndoManager
を作成します。
メソッドの詳細 |
---|
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
のどちらか 1 つを呼び出す簡易メソッドです。取り消された編集結果がある場合 (次の編集結果のインデックスが編集結果のリストの長さを表す値より小さくなっている場合) は redo
、そうでない場合は undo
を呼び出します。
CannotUndoException
- 編集結果の中に CannotUndoException
をスローするものがある場合
CannotRedoException
- 編集結果の中に CannotRedoException
をスローするものがある場合canUndoOrRedo()
,
getUndoOrRedoPresentationName()
public boolean canUndoOrRedo()
undo
または redo
を呼び出せる場合は true を返します。
canUndoOrRedo
の呼び出しが有効な場合は trueundoOrRedo()
public void undo() throws CannotUndoException
end
が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合、このメソッドは、次の編集結果のインデックスから前回の重大な編集結果までのすべての編集結果に対して undo
を呼び出します。その結果、次の編集結果のインデックスが更新されます。
UndoableEdit
内の undo
CompoundEdit
内の undo
CannotUndoException
- 編集結果の中に CannotUndoException
をスローするものがある場合、または元に戻す編集結果が 存在しない場合CompoundEdit.end()
,
canUndo()
,
editToBeUndone()
public boolean canUndo()
end
が呼び出された場合、このメソッドはスーパークラスから値を返します。それ以外の場合で、元に戻す編集結果が存在する場合 (editToBeUndone
が null
以外を返す場合)、このメソッドは true を返します。
UndoableEdit
内の canUndo
CompoundEdit
内の canUndo
CompoundEdit.canUndo()
,
editToBeUndone()
public void redo() throws CannotRedoException
end
が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合、このメソッドは、次の編集結果のインデックスから次の重大な編集結果までのすべての編集結果に対して redo
を呼び出し、それに合わせて次の編集結果のインデックスを更新します。
UndoableEdit
内の redo
CompoundEdit
内の redo
CannotRedoException
- 編集結果の中に CannotRedoException
をスローするものがある場合、または再実行する編集結果が 存在しない場合CompoundEdit.end()
,
canRedo()
,
editToBeRedone()
public boolean canRedo()
end
が呼び出された場合、このメソッドはスーパークラスから値を返します。それ以外の場合で、再実行する編集結果が存在する場合 (editToBeRedone
が null
以外を返す場合)、このメソッドは true を返します。
UndoableEdit
内の canRedo
CompoundEdit
内の canRedo
CompoundEdit.canRedo()
,
editToBeRedone()
public boolean addEdit(UndoableEdit anEdit)
UndoManager
に UndoableEdit
を追加します。すると、次の編集結果のインデックスから編集リストの末尾までのすべての編集結果が削除されます。end
が呼び出された場合、編集結果は追加されず、false
が返されます。end
が呼び出されていない場合、このメソッドは true
を返します。
UndoableEdit
内の addEdit
CompoundEdit
内の addEdit
anEdit
- 追加される編集結果
anEdit
を 組み込むことができる場合は trueCompoundEdit.end()
,
CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)
public void end()
UndoManager
を標準の CompoundEdit
にします。この場合、これまでに取り消されたすべての編集結果が削除されます。
CompoundEdit
内の end
CompoundEdit.end()
public String getUndoOrRedoPresentationName()
getUndoPresentationName
または getRedoPresentationName
を返す簡易メソッドです。次の編集結果のインデックスが編集結果リストのサイズと等しい場合、getUndoPresentationName
が返されます。そうでない場合、getRedoPresentationName
が返されます。
public String getUndoPresentationName()
end
が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合で、取り消す編集結果が存在する場合、このメソッドは、取り消される次の重大な編集結果から値を返します。取り消す編集結果が存在せず、end
が呼び出されていない場合、このメソッドは UIManager
プロパティー "AbstractUndoableEdit.undoText" から値を返します。
UndoableEdit
内の getUndoPresentationName
CompoundEdit
内の getUndoPresentationName
undo()
,
CompoundEdit.getUndoPresentationName()
public String getRedoPresentationName()
end
が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合で、再実行する編集結果が存在する場合、このメソッドは、再実行する次の重大な編集結果から値を返します。再実行する編集結果が存在せず、end
が呼び出されていない場合、このメソッドは UIManager
プロパティー "AbstractUndoableEdit.redoText" から値を返します。
UndoableEdit
内の getRedoPresentationName
CompoundEdit
内の getRedoPresentationName
redo()
,
CompoundEdit.getRedoPresentationName()
public void undoableEditHappened(UndoableEditEvent e)
UndoableEditListener
メソッドです。このメソッドは、e.getEdit()
を使って addEdit
を呼び出します。
UndoableEditListener
内の undoableEditHappened
e
- 追加する UndoableEditEvent
が含まれている UndoableEditEvent
addEdit(javax.swing.undo.UndoableEdit)
public String toString()
CompoundEdit
内の toString
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。