javax.swing.undo包下面有这方面的类,你看一下。《java2图形设计卷IISWING》P895有例子。

解决方案 »

  1.   

    从我的一个程序中节选过来,你应该看得懂protected UndoManager undo = new UndoManager();
    protected ActionListener undoRedo = new DocumentUndoRedoManager();textArea.getDocument().addUndoableEditListener((UndoableEditListener));
    toolBar.undoButton.addActionListener(undoRedo);
    toolBar.undoButton.setActionCommand(UNDO_COMMAND);
    ........//an inner class
         class DocumentUndoRedoManager implements UndoableEditListener, ActionListener{
    public void undoableEditHappened(UndoableEditEvent e){
    undo.addEdit(e.getEdit());
    check();
    }
    public void actionPerformed(ActionEvent e){
    String cmd = e.getActionCommand();
    if(cmd.equals(UNDO_COMMAND)){
    undo.undo();
    }else if(cmd.equals(REDO_COMMAND)){
    undo.redo();
    }
    check();
    textArea.requestFocus();
    }
    public void check(){
    boolean canUndo=undo.canUndo(), canRedo=undo.canRedo();
    menuBar.undoMenuItem.setEnabled(canUndo);
    menuBar.redoMenuItem.setEnabled(canRedo);
    toolBar.undoButton.setEnabled(canUndo);
    toolBar.redoButton.setEnabled(canRedo);
    }
    }