UndoManager

UndoManager (편집 목록 관리와 undo/redo)

UndoManagerUndoableEdit 목록을 관리하고 적절한 편집을 undo하거나 redo하는 방법을 제공해요. CompoundEdit을 확장하며 UndoableEditListener을 구현해요.

출처: Java API Reference

본문

UndoManager에 편집을 추가하는 방법은 두 가지예요. addEdit 메서드로 직접 추가하거나, UndoableEditListener을 지원하는 빈(bean)에 UndoManager을 추가하는 방식이에요. 다음 예시는 UndoManager을 생성하고 JTextFieldUndoableEditListener로 추가해요:

UndoManager undoManager = new UndoManager();
JTextField tf = ...;
tf.getDocument().addUndoableEditListener(undoManager);

UndoManager은 편집의 정렬된 목록과 목록에서 다음 편집의 인덱스를 유지해요. 다음 편집의 인덱스는 현재 편집 목록의 크기이거나, undo가 호출된 경우 마지막으로 undone된 유의미한 편집의 인덱스에 해당해요.

undo가 호출되면 다음 편집 인덱스부터 마지막 유의미한 편집까지 모든 편집이 역순으로 undone돼요. 예를 들어 A b c D 편집으로 구성된 UndoManager을 고려해보세요. 대문자 굵은 글씨 편집은 유의미하고, 소문자 기울임꼴 편집은 비유의미해요.

그림 1과 같이 D가 방금 추가됐다면 다음 편집의 인덱스는 4가 돼요. undo를 호출하면 D에서 undo를 호출하고 다음 편집 인덱스를 3(편집 c)으로 설정해요. 마지막 유의미한 편집은 A이므로 다시 undo를 호출하면 c, b에 undo를 호출하고 다음 편집 인덱스를 A로 설정해요.

UndoableEdit, UndoableEditListener, EventListener, Serializable을 구현해요.

더 알아보기 (Learn more)

Java 공식 API