JavaTM 2 Platform
Standard Ed. 6

javax.swing.undo
介面 UndoableEdit

所有已知實作類別:
AbstractDocument.DefaultDocumentEvent, AbstractDocument.ElementEdit, AbstractUndoableEdit, CompoundEdit, DefaultStyledDocument.AttributeUndoableEdit, StateEdit, UndoManager

public interface UndoableEdit

UndoableEdit 表示一個編輯。該編輯可被撤消,如果已撤消,該編輯可恢復。

設計 UndoableEditUndoManager 一起使用。由於 UndoableEdit 是由 UndoableEditListener 產生的,所以通常將它們添加到 UndoManager。當將 UndoableEdit 添加到 UndoManager 時,會發生以下事件(假定沒有在 UndoManager 上調用 end):

  1. 如果 UndoManager 套件含編輯,則它將在當前編輯上調用 addEdit,傳入新的編輯作為參數。如果 addEdit 返回 true,則新的編輯被視為已合併到當前編輯中,並且不會將新的編輯添加到當前編輯列表。編輯可以使用 addEdit 將多個較小編輯合併到較大編輯中,並且將合併後的編輯視為單個編輯。
  2. 如果 addEdit 返回 false,則以傳入的當前編輯對新的編輯調用 replaceEdit。這與 addEdit 截然相反 — 如果新的編輯從 replaceEdit 返回 true,則新的編輯將替換當前編輯。
UndoManager 使用 isSignificant 確定應該撤消或恢復多少編輯。UndoManager 將撤消或恢復當前編輯與最後一個或下一個有效編輯之間的所有無效編輯(isSignificant 返回 false)。addEditreplaceEdit 可用於將多個編輯視為單個編輯,從 isSignificant 返回 false 允許 treating 可用於一次撤消或恢復多個較小編輯。也可以使用 addEdit 方法完成類似的功能。


方法摘要
 boolean addEdit(UndoableEdit anEdit)
          將 UndoableEdit 添加到此 UndoableEdit
 boolean canRedo()
          如果可以恢復此編輯,則返回 true。
 boolean canUndo()
          如果可以撤消此編輯,則返回 true。
 void die()
          通知某個編輯不應再使用它。
 String getPresentationName()
          返回此編輯的本地化可讀描述,例如,適於在更改日誌中使用。
 String getRedoPresentationName()
          返回此編輯可恢復形式的本地化可讀描述,例如,適於用作 “Redo” 選單項。
 String getUndoPresentationName()
          返回此編輯可撤消形式的本地化可讀描述,例如,適於用作 “Undo” 選單項。
 boolean isSignificant()
          如果認為此編輯有效,則返回 true。
 void redo()
          重新應用編輯。
 boolean replaceEdit(UndoableEdit anEdit)
          如果此 UndoableEdit 應替換 anEdit,則返回 true。
 void undo()
          撤消編輯。
 

方法詳細資訊

undo

void undo()
          throws CannotUndoException
撤消編輯。

拋出:
CannotUndoException - 如果不能撤消此編輯

canUndo

boolean canUndo()
如果可以撤消此編輯,則返回 true。

返回:
如果可以撤消此編輯,則返回 true

redo

void redo()
          throws CannotRedoException
重新應用編輯。

拋出:
CannotRedoException - 如果不能恢復此編輯

canRedo

boolean canRedo()
如果可以恢復此編輯,則返回 true。

返回:
如果可以恢復此編輯,則返回 true

die

void die()
通知某個編輯不應再使用它。一旦將 UndoableEdit 標記為停用,則不能再對它進行撤消或恢復。

對於不可能撤消或恢復時清除不再需要的狀態而言,這是一個有用的鉤子 (hook)。例如,刪除不能再恢復的物件所使用的檔案資源。UndoManager 在其離開編輯佇列之前調用它。

注意,這是一個單向操作。不存在 "un-die" 方法。

另請參見:
CompoundEdit.die()

addEdit

boolean addEdit(UndoableEdit anEdit)
UndoableEdit 添加到此 UndoableEdit。此方法可用於將多個較小編輯合併為一個較大的復合編輯。例如,文本編輯器通常允許對單詞或句子應用撤消操作。文本編輯器可以選擇在每個關鍵事件上產生編輯,但允許將這些編輯合併為一個更加使用者友好的單元,比如一個單詞。在這種情況下,當可以合併編輯時,UndoableEdit 將覆寫 addEdit 以返回 true。

返回值為 true 指示已將 anEdit 合併到此編輯。返回值為 false 指示不能將 anEdit 合併到此編輯。

通常,接收者已經在 UndoManager(或者其他 UndoableEditListener)佇列中,並且可以合併 anEdit,而不是將它按順序添加到佇列中。

如果返回 true,則從現在開始,anEdit 必須從 canUndocanRedo 返回 false,並且必須對 undoredo 拋出適當的異常。

參數:
anEdit - 要添加的編輯
返回:
如果可以將 anEdit 合併到此編輯,則返回 true

replaceEdit

boolean replaceEdit(UndoableEdit anEdit)
如果此 UndoableEdit 應替換 anEdit,則返回 true。此方法由 CompoundEditUndoManager 使用;如果不能將 anEdit 添加到當前編輯(addEdit 返回 false),則調用此方法。

此方法提供了某個編輯替換現有編輯的方法。

此訊息與 addEdit 相反 -- anEdit 通常已經在 UndoManager(或者其他 UndoableEditListener)的佇列中,並且接收者可以替換它。

如果返回 true,則從現在開始,anEdit 必須從 canUndo() 和 canRedo() 返回 false,並且必須對 undo() 或 redo() 拋出適當的異常。

參數:
anEdit - 替換當前編輯的編輯
返回:
如果此編輯應該替換 anEdit,則返回 true

isSignificant

boolean isSignificant()
如果認為此編輯有效,則返回 true。有效編輯通常是指應該呈現給使用者的編輯,可能在選單項或工具提示上。UndoManager 將為下一個有效編輯撤消或恢復所有無效編輯。

返回:
如果此編輯有效,則返回 true

getPresentationName

String getPresentationName()
返回此編輯的本地化可讀描述,例如,適於在更改日誌中使用。

返回:
此編輯的描述

getUndoPresentationName

String getUndoPresentationName()
返回此編輯可撤消形式的本地化可讀描述,例如,適於用作 “Undo” 選單項。此方法通常派生自 getPresentationName

返回:
此編輯可撤消形式的描述

getRedoPresentationName

String getRedoPresentationName()
返回此編輯可恢復形式的本地化可讀描述,例如,適於用作 “Redo” 選單項。此方法通常派生自 getPresentationName

返回:
此編輯可恢復形式的描述

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only