⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 extendedundomanager.java

📁 java swing 开发代码
💻 JAVA
字号:
// ExtendedUndoManager.java// An extension of UndoManager that provides two additional features: // (1) The ability to add & remove listeners and (2) the ability to gain more// extensive access to the edits being managed.//package	jswing.ch18;import javax.swing.event.*;import javax.swing.undo.*;import java.util.Vector;public class ExtendedUndoManager extends UndoManager  implements UndoableEditListener {  private ExtendedUndoableEditSupport support =    new ExtendedUndoableEditSupport();  private Object source; // The source of the last edit  // Return the complete list of edits in an array.  public synchronized UndoableEdit[] getEdits() {    UndoableEdit[] array = new UndoableEdit[edits.size()];    edits.copyInto(array);    return array;  }  // Return all currently significant undoable edits. The first edit is the  // next one to be undone.  public synchronized UndoableEdit[] getUndoableEdits() {    int size = edits.size();    Vector v = new Vector(size);    for (int i=size-1;i>=0;i--) {      UndoableEdit u = (UndoableEdit)edits.elementAt(i);      if (u.canUndo() && u.isSignificant())        v.addElement(u);    }    UndoableEdit[] array = new UndoableEdit[v.size()];    v.copyInto(array);    return array;  }  // Return all currently significant redoable edits. The first edit is the  // next one to be redone.  public synchronized UndoableEdit[] getRedoableEdits() {    int size = edits.size();    Vector v = new Vector(size);    for (int i=0; i<size; i++) {      UndoableEdit u = (UndoableEdit)edits.elementAt(i);      if (u.canRedo() && u.isSignificant())        v.addElement(u);    }    UndoableEdit[] array = new UndoableEdit[v.size()];    v.copyInto(array);    return array;  }  // UndoableEditListener Method Support (ExtendedUndoManager.java, part 2)  //  // Add an edit and notify our listeners.  public synchronized boolean addEdit(UndoableEdit anEdit) {    boolean b = super.addEdit(anEdit);    if (b)      support.postEdit(anEdit); // If the edit was added, notify listeners.    return b;  }  // When an edit is sent to us, call addEdit() to notify any of our listeners.  public synchronized void undoableEditHappened(UndoableEditEvent ev) {    UndoableEdit ue = ev.getEdit();    source = ev.getSource();    addEdit(ue);  }  // Add a listener to be notified each time an edit is added to this manager.  // This makes it easy to update undo/redo menus as edits are added.  public synchronized void addUndoableEditListener(UndoableEditListener l) {    support.addUndoableEditListener(l);  }  // Remove a listener from this manager.  public synchronized void removeUndoableEditListener(UndoableEditListener l) {    support.removeUndoableEditListener(l);  }  // A simple extension of UndoableEditSupport that lets us specify the event  // source each time we post an edit  class ExtendedUndoableEditSupport extends UndoableEditSupport {    // Post an edit to added listeners.    public synchronized void postEdit(UndoableEdit ue) {      realSource = source; // From our enclosing manager object      super.postEdit(ue);    }  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -