/* UndoableEdit and AbstractUndoableEdit */
AbstractUndoableEdit edit = new AbstractUndoableEdit();
// methods fall into 3 categories
// 1.undoable operations
// if the alive field is false, all operation fail
// the hasBeenDone field affect the behaviours of canUndo and canRedo method
if (edit.canUndo()) {
edit.undo(); // the behaviour depends on canUndo
}
if (edit.canRedo()) {
edit.redo(); // the behaviour depends on canRedo
}
edit.die(); // set alive to be false
// 2.edit management
edit.isSignificant(); // if the edit affect model state, default implementation return false
edit.addEdit(null); // edit queued in some UndoableEditListener, and try to absorb another edit
edit.replaceEdit(null); // try to replace another edit queued in some UndoableEditListener
// 3.representation
edit.getPresentationName();
// the following 2 methods use result of getPresentationName and add undo/redo text in UIManager
edit.getUndoPresentationName();
edit.getRedoPresentationName();
/* CompoundEdit */
// implements the composition pattern, manages a set of edits
CompoundEdit compound = new CompoundEdit();
// undoable operations (except die) fail if inProgress is true
// edit management methods (except isSignificant) fail if inProgress is false
compound.isInProgress();
compound.end(); // set inProgress to be false
// representation methods try to use information of the last edit
/* UndoManager */
UndoManager manager = new UndoManager();
// extends undoable operations when inProgress is true
// undo/redo now stop at the latest significant edit
// limit the maximal number of edits
manager.setLimit(0);
manager.getLimit();
manager.discardAllEdits(); // clear all edits
// extends representation methods when inProgress is true
// undo/redo methods try to use information of the latest edit to be undo/redo
// add undoOrRedo methods
if (manager.canUndoOrRedo()) {
manager.undoOrRedo();
}
manager.getUndoOrRedoPresentationName();
/* StateEditable */
// stateful object should be able to store and restore its state
StateEditable stateEditable = new StateEditable() {
public void restoreState(Hashtable<?, ?> state) {}
public void storeState(Hashtable<Object, Object> state) {}
};
/* StateEdit */
// extends AbstractUndoableEdit to add the ability to use StateEditable
// store pre-state
StateEdit stateEdit = new StateEdit(stateEditable);
// store post-state
stateEdit.end();
// restore the state of stateEditable
stateEdit.undo();
stateEdit.redo();
/* UndoableEditSupport */
UndoableEditSupport support = new UndoableEditSupport(new Object());
// methods fall into 2 categories
// 1.manage a set of UndoableEditListener
support.addUndoableEditListener(null);
support.removeUndoableEditListener(null);
support.getUndoableEditListeners();
// 2.send UndoableEditEvent
// if updateLevel is 0, all UndoableEditEvent would be sent immediately
// else UndoableEdit will be saved in CompoundUndoableEdit and wait util updateLevel change to 0
support.beginUpdate(); // increase updateLevel
// send UndoableEditEvent if updateLevel is 0 or save edit in CompoundUndoableEdit
support.postEdit(null);
support.endUpdate(); // decrease unpdateLeve and send UndoableEditEvent if necessary
分享到:
相关推荐
javax.swing.undo javax.transaction javax.transaction.xa javax.xml javax.xml.datatype javax.xml.namespace javax.xml.parsers javax.xml.transform javax.xml.transform.dom javax.xml.transform.sax ...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
- `javax.swing.undo`:提供了撤销/重做功能的支持,常用于文本编辑组件。 Swing的版面结构是构建GUI布局的关键。它允许开发者通过布局管理器(Layout Manager)来控制组件的位置和大小。例如,`JFrame`、`JDialog`...
### Java中Swing的相关知识详解 ...- `javax.swing.undo`: 支持撤销操作。 以上介绍涵盖了Swing的基本概念、特点以及类层次结构。通过理解这些基础知识,开发者可以更好地利用Swing来构建高质量的图形用户界面。
10. `javax.swing.undo`:提供了撤销/重做功能的实现,使得用户操作可以被追踪和撤销。 值得注意的是,Swing组件与AWT组件在命名上有所区分,Swing组件的名称通常以大写字母J开头,例如`JFrame`、`JPanel`等,以此...
- `javax.swing.undo`: 实现文字组件的撤销/重做功能。 9.1.3 常用组件的继承关系 Swing组件的继承层次结构始于`java.lang.Object`,然后是`java.awt.Component`,接着是`java.awt.Container`,再是`javax.swing....
javax.swing.tree [15 examples] javax.swing.undo [1 examples] javax.xml.parsers [8 examples] javax.xml.transform [5 examples] javax.xml.transform.sax [1 examples] org.w3c.dom ...
16. **`javax.swing.undo`**: - 提供了文本组件的撤销(Undo)和重做(Redo)功能,增强了用户交互体验。 #### Swing的版面结构分析 Swing中的组件主要分为两类:轻量级组件(lightweight component)和重量级组件...
javax.swing.undo javax.tools javax.transaction javax.transaction.xa javax.xml javax.xml.bind javax.xml.bind.annotation javax.xml.bind.annotation.adapters javax.xml.bind.attachment javax.xml....
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
此外,`javax.swing.event`包处理组件产生的事件,`javax.swing.undo`提供了文字组件的撤销/重做功能。 Swing组件之间存在着清晰的继承关系,所有组件都从`java.lang.Object`派生,然后是`java.awt.Component`,...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...
javax.swing.undo 允许开发人员为应用程序(例如文本编辑器)中的撤消/恢复提供支持。 javax.transaction 包含解组期间通过 ORB 机制抛出的三个异常。 javax.transaction.xa 提供定义事务管理器和资源管理器之间的...