| 
 | JavaTM Platform Standard Ed. 6 | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Objectjavax.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 内の undoCompoundEdit 内の undoCannotUndoException - 編集結果の中に CannotUndoException をスローするものがある場合、または元に戻す編集結果が 存在しない場合CompoundEdit.end(), 
canUndo(), 
editToBeUndone()public boolean canUndo()
end が呼び出された場合、このメソッドはスーパークラスから値を返します。それ以外の場合で、元に戻す編集結果が存在する場合 (editToBeUndone が null 以外を返す場合)、このメソッドは true を返します。
UndoableEdit 内の canUndoCompoundEdit 内の canUndoCompoundEdit.canUndo(), 
editToBeUndone()
public void redo()
          throws CannotRedoException
end が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合、このメソッドは、次の編集結果のインデックスから次の重大な編集結果までのすべての編集結果に対して redo を呼び出し、それに合わせて次の編集結果のインデックスを更新します。
UndoableEdit 内の redoCompoundEdit 内の redoCannotRedoException - 編集結果の中に CannotRedoException をスローするものがある場合、または再実行する編集結果が 存在しない場合CompoundEdit.end(), 
canRedo(), 
editToBeRedone()public boolean canRedo()
end が呼び出された場合、このメソッドはスーパークラスから値を返します。それ以外の場合で、再実行する編集結果が存在する場合 (editToBeRedone が null 以外を返す場合)、このメソッドは true を返します。
UndoableEdit 内の canRedoCompoundEdit 内の canRedoCompoundEdit.canRedo(), 
editToBeRedone()public boolean addEdit(UndoableEdit anEdit)
UndoManager に UndoableEdit を追加します。すると、次の編集結果のインデックスから編集リストの末尾までのすべての編集結果が削除されます。end が呼び出された場合、編集結果は追加されず、false が返されます。end が呼び出されていない場合、このメソッドは true を返します。
UndoableEdit 内の addEditCompoundEdit 内の addEditanEdit - 追加される編集結果
anEdit を 組み込むことができる場合は trueCompoundEdit.end(), 
CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)public void end()
UndoManager を標準の CompoundEdit にします。この場合、これまでに取り消されたすべての編集結果が削除されます。
CompoundEdit 内の endCompoundEdit.end()public String getUndoOrRedoPresentationName()
getUndoPresentationName または getRedoPresentationName を返す簡易メソッドです。次の編集結果のインデックスが編集結果リストのサイズと等しい場合、getUndoPresentationName が返されます。そうでない場合、getRedoPresentationName が返されます。
public String getUndoPresentationName()
end が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合で、取り消す編集結果が存在する場合、このメソッドは、取り消される次の重大な編集結果から値を返します。取り消す編集結果が存在せず、end が呼び出されていない場合、このメソッドは UIManager プロパティー "AbstractUndoableEdit.undoText" から値を返します。
UndoableEdit 内の getUndoPresentationNameCompoundEdit 内の getUndoPresentationNameundo(), 
CompoundEdit.getUndoPresentationName()public String getRedoPresentationName()
end が呼び出された場合、このメソッドはスーパークラスを呼び出します。それ以外の場合で、再実行する編集結果が存在する場合、このメソッドは、再実行する次の重大な編集結果から値を返します。再実行する編集結果が存在せず、end が呼び出されていない場合、このメソッドは UIManager プロパティー "AbstractUndoableEdit.redoText" から値を返します。
UndoableEdit 内の getRedoPresentationNameCompoundEdit 内の getRedoPresentationNameredo(), 
CompoundEdit.getRedoPresentationName()public void undoableEditHappened(UndoableEditEvent e)
UndoableEditListener メソッドです。このメソッドは、e.getEdit() を使って addEdit を呼び出します。
UndoableEditListener 内の undoableEditHappenede - 追加する UndoableEditEvent が含まれている UndoableEditEventaddEdit(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 も参照してください。