JavaTM Platform
Standard Ed. 6

javax.swing.undo
클래스 UndoManager

java.lang.Object 
  상위를 확장 javax.swing.undo.AbstractUndoableEdit 
      상위를 확장 javax.swing.undo.CompoundEdit 
          상위를 확장 javax.swing.undo.UndoManager
모든 구현된 인터페이스:
Serializable , EventListener , UndoableEditListener , UndoableEdit


public class UndoManager
extends CompoundEdit
implements UndoableEditListener

UndoManager 는,UndoableEdit 의 리스트를 관리해, 편집 결과를 선택해 그 내용을 바탕으로 되돌리거나 재실행하거나 할 수 있습니다. UndoManager 에 편집 결과를 추가하는 방법은 2 서로 통과합니다. 1개(살)은 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 의 클래스와는 달라, thread에 대해서 안전합니다.  

경고: 이 클래스의 직렬화 된 객체는, 향후의 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)
          가능하면, 이 UndoManagerUndoableEdit 를 추가합니다.
 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
 

생성자 의 상세

UndoManager

public UndoManager()
새로운 UndoManager 를 작성합니다.

메소드의 상세

getLimit

public int getLimit()
UndoManager 가 보관 유지하는 편집 결과의 최대수를 돌려줍니다. 0 보다 작은 값은, 편집 결과의 수에 제한이 없는 것을 나타냅니다.

반환값:
UndoManager 가 보관 유지하는 편집 결과의 최대수
관련 항목:
addEdit(javax.swing.undo.UndoableEdit) , setLimit(int)

discardAllEdits

public void discardAllEdits()
undo 매니저를 비워, 각 편 집결과의 진행시에 die 메세지를 보냅니다.

관련 항목:
AbstractUndoableEdit.die()

trimForLimit

protected void trimForLimit()
큐에 들어간 편집 결과의 수를, 다음의 편집 결과의 인덱스의 중앙의 사이즈 한도의 범위에까지 줄입니다.


trimEdits

protected void trimEdits(int from,
                         int to)
지정된 범위내의 편집 결과를 삭제합니다. 지정된 범위내의 모든 편집 결과 (범위의 양단을 포함한다. 역순서)에 대해서 die 가 불려 가 편집 결과의 리스트로부터 이러한 편집 결과가 삭제됩니다. fromto 보다 큰 경우는, 아무것도 실시하지 않습니다.

파라미터:
from - 삭제하는 최소의 인덱스
to - 삭제하는 최대의 인덱스

setLimit

public void setLimit(int l)
UndoManager 가 보관 유지하는 편집 결과의 최대수를 설정합니다. 0 보다 작은 값은, 편집 결과의 수에 제한이 없는 것을 나타냅니다. 편집 결과를 파기해 이 제한수를 줄일 필요가 있는 경우는, 이러한 편집 결과에 대해서, 추가시와 역의 순서로 die 를 호출합니다. 디폴트는 100 입니다.

파라미터:
l - 새로운 제한치
예외:
RuntimeException - 이 UndoManager 가 실행중이 아닌 경우 (end 가 불려 갔을 경우)
관련 항목:
CompoundEdit.isInProgress() , end() , addEdit(javax.swing.undo.UndoableEdit) , getLimit()

editToBeUndone

protected UndoableEdit  editToBeUndone()
undo 가 불려 갔을 경우에, 바탕으로 되돌리는 다음의 중대한 편집 결과를 돌려줍니다. 이 메소드는, 바탕으로 되돌리는 편집 결과가 없는 경우는 null 를 돌려줍니다.

반환값:
바탕으로 되돌리는 다음의 중대한 편집 결과

editToBeRedone

protected UndoableEdit  editToBeRedone()
redo 가 불려 갔을 경우에 재실행하는 다음의 중대한 편집 결과를 돌려줍니다. 이 메소드는, 재실행하는 편집 결과가 없는 경우는 null 를 돌려줍니다.

반환값:
재실행하는 다음의 중대한 편집 결과

undoTo

protected void undoTo(UndoableEdit  edit)
               throws CannotUndoException 
다음의 편집 결과의 인덱스로부터 edit 까지의 모든 변경을 취소해, 게다가 합해 다음의 편집 결과의 인덱스를 갱신합니다.

예외:
CannotUndoException - 편집 결과안에 O1:code 태그다 모습CannotUndoException 를 throw 하는 것이 있는 경우

redoTo

protected void redoTo(UndoableEdit  edit)
               throws CannotRedoException 
다음의 편집 결과의 인덱스로부터 edit 까지의 모든 변경을 재실행해, 거기에 합해 다음의 편집 결과의 인덱스를 갱신합니다.

예외:
CannotRedoException - 편집 결과안에 O2:code 태그다 모습CannotRedoException 를 throw 하는 것이 있는 경우

undoOrRedo

public void undoOrRedo()
                throws CannotRedoException ,
                       CannotUndoException 
undo 또는 redo 의 어느 쪽인지 1 개를 호출하는 편리한 메소드입니다. 삭제된 편집 결과가 있는 경우 (다음의 편집 결과의 인덱스가 편집 결과의 리스트의 길이를 나타내는 값보다 작아지고 있는 경우)는 redo, 그렇지 않은 경우는 undo 를 호출합니다.

예외:
CannotUndoException - 편집 결과안에 O1:code 태그다 모습CannotUndoException 를 throw 하는 것이 있는 경우
CannotRedoException - 편집 결과안에 O2:code 태그다 모습CannotRedoException 를 throw 하는 것이 있는 경우
관련 항목:
canUndoOrRedo() , getUndoOrRedoPresentationName()

canUndoOrRedo

public boolean canUndoOrRedo()
undo 또는 redo 를 호출할 수 있는 경우는 true 를 돌려줍니다.

반환값:
canUndoOrRedo 의 호출이 유효한 경우는 true
관련 항목:
undoOrRedo()

undo

public void undo()
          throws CannotUndoException 
편집 결과를 선택해 취소합니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스를 호출합니다. 그 이외의 경우, 이 메소드는, 다음의 편집 결과의 인덱스로부터 전회의 중대한 편집 결과까지의 모든 편집 결과에 대해서 undo 를 호출합니다. 그 결과, 다음의 편집 결과의 인덱스가 갱신됩니다.

정의:
인터페이스 UndoableEdit 내의 undo
오버라이드(override):
클래스 CompoundEdit 내의 undo
예외:
CannotUndoException - 편집 결과안에 CannotUndoException 를 throw 하는 것이 있는 경우, 또는 바탕으로 되돌리는 편집 결과가 존재하지 않는 경우
관련 항목:
CompoundEdit.end() , canUndo() , editToBeUndone()

canUndo

public boolean canUndo()
편집 결과를 취소할 수 있는 경우는 true 를 돌려줍니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스로부터 값을 돌려줍니다. 그 이외의 경우로, 바탕으로 되돌리는 편집 결과가 존재하는 경우 (editToBeUndonenull 이외를 돌려주는 경우), 이 메소드는 true 를 돌려줍니다.

정의:
인터페이스 UndoableEdit 내의 canUndo
오버라이드(override):
클래스 CompoundEdit 내의 canUndo
반환값:
바탕으로 되돌리는 편집 결과가 존재하는 경우는 true
관련 항목:
CompoundEdit.canUndo() , editToBeUndone()

redo

public void redo()
          throws CannotRedoException 
편집 결과를 선택해 재실행합니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스를 호출합니다. 그 이외의 경우, 이 메소드는, 다음의 편집 결과의 인덱스로부터 다음의 중대한 편집 결과까지의 모든 편집 결과에 대해서 redo 를 호출해, 게다가 합해 다음의 편집 결과의 인덱스를 갱신합니다.

정의:
인터페이스 UndoableEdit 내의 redo
오버라이드(override):
클래스 CompoundEdit 내의 redo
예외:
CannotRedoException - 편집 결과안에 CannotRedoException 를 throw 하는 것이 있는 경우, 또는 재실행하는 편집 결과가 존재하지 않는 경우
관련 항목:
CompoundEdit.end() , canRedo() , editToBeRedone()

canRedo

public boolean canRedo()
편집 결과를 재실행할 수 있는 경우는 true 를 돌려줍니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스로부터 값을 돌려줍니다. 그 이외의 경우로, 재실행하는 편집 결과가 존재하는 경우 (editToBeRedonenull 이외를 돌려주는 경우), 이 메소드는 true 를 돌려줍니다.

정의:
인터페이스 UndoableEdit 내의 canRedo
오버라이드(override):
클래스 CompoundEdit 내의 canRedo
반환값:
재실행하는 편집 결과가 존재하는 경우는 true
관련 항목:
CompoundEdit.canRedo() , editToBeRedone()

addEdit

public boolean addEdit(UndoableEdit  anEdit)
가능하면, 이 UndoManagerUndoableEdit 를 추가합니다. 그러자(면), 다음의 편집 결과의 인덱스로부터 편집 리스트의 말미까지의 모든 편집 결과가 삭제됩니다. end 가 불려 갔을 경우, 편집 결과는 추가되지 않고,false 가 돌려주어집니다. end 가 불려 가지 않은 경우, 이 메소드는 true 를 돌려줍니다.

정의:
인터페이스 UndoableEdit 내의 addEdit
오버라이드(override):
클래스 CompoundEdit 내의 addEdit
파라미터:
anEdit - 추가되는 편집 결과
반환값:
이 편집 결과에 anEdit 를 짜넣을 수가 있는 경우는 true
관련 항목:
CompoundEdit.end() , CompoundEdit.addEdit(javax.swing.undo.UndoableEdit)

end

public void end()
UndoManager 를 표준의 CompoundEdit 로 합니다. 이 경우, 지금까지 삭제된 모든 편집 결과가 삭제됩니다.

오버라이드(override):
클래스 CompoundEdit 내의 end
관련 항목:
CompoundEdit.end()

getUndoOrRedoPresentationName

public String  getUndoOrRedoPresentationName()
getUndoPresentationName 또는 getRedoPresentationName 를 돌려주는 편리한 메소드입니다. 다음의 편집 결과의 인덱스가 편집 결과 리스트의 사이즈와 동일한 경우,getUndoPresentationName 가 돌려주어집니다. 그렇지 않은 경우,getRedoPresentationName 가 돌려주어집니다.

반환값:
바탕으로 되돌린다, 또는 재실행하는 이름

getUndoPresentationName

public String  getUndoPresentationName()
이 편집 결과의 취소해 가능한 형식의 설명을 돌려줍니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스를 호출합니다. 그 이외의 경우로, 취소하는 편집 결과가 존재하는 경우, 이 메소드는, 삭제되는 다음의 중대한 편집 결과로부터 값을 돌려줍니다. 취소하는 편집 결과가 존재하지 않고,end 가 불려 가지 않은 경우, 이 메소드는 UIManager 프로퍼티 "AbstractUndoableEdit.undoText" 로부터 값을 돌려줍니다.

정의:
인터페이스 UndoableEdit 내의 getUndoPresentationName
오버라이드(override):
클래스 CompoundEdit 내의 getUndoPresentationName
반환값:
이 편집 결과의 취소해 가능한 형식의 설명
관련 항목:
undo() , CompoundEdit.getUndoPresentationName()

getRedoPresentationName

public String  getRedoPresentationName()
이 편집 결과의 재실행 가능한 형식의 설명을 돌려줍니다. end 가 불려 갔을 경우, 이 메소드는 슈퍼 클래스를 호출합니다. 그 이외의 경우로, 재실행하는 편집 결과가 존재하는 경우, 이 메소드는, 재실행하는 다음의 중대한 편집 결과로부터 값을 돌려줍니다. 재실행하는 편집 결과가 존재하지 않고,end 가 불려 가지 않은 경우, 이 메소드는 UIManager 프로퍼티 "AbstractUndoableEdit.redoText" 로부터 값을 돌려줍니다.

정의:
인터페이스 UndoableEdit 내의 getRedoPresentationName
오버라이드(override):
클래스 CompoundEdit 내의 getRedoPresentationName
반환값:
이 편집 결과의 재실행 가능한 형식의 설명
관련 항목:
redo() , CompoundEdit.getRedoPresentationName()

undoableEditHappened

public void undoableEditHappened(UndoableEditEvent  e)
UndoableEditListener 메소드입니다. 이 메소드는,e.getEdit() 를 사용해 addEdit 를 호출합니다.

정의:
인터페이스 UndoableEditListener 내의 undoableEditHappened
파라미터:
e - 추가하는 UndoableEditEvent 가 포함되어 있다 UndoableEditEvent
관련 항목:
addEdit(javax.swing.undo.UndoableEdit)

toString

public String  toString()
이 객체의 프로퍼티을 표시 및 식별하는 캐릭터 라인을 돌려줍니다.

오버라이드(override):
클래스 CompoundEdit 내의 toString
반환값:
이 객체의 캐릭터 라인 표현

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.