Adding Undo and Redo to a Text Component : Redo Undo « Swing « Java Tutorial






import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.KeyStroke;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.Document;
import javax.swing.text.JTextComponent;
import javax.swing.undo.CannotRedoException;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

public class Main{
public static void main(String[] argv) throws Exception{
    JTextComponent textcomp = new JTextArea();
    final UndoManager undo = new UndoManager();
    Document doc = textcomp.getDocument();

    JFrame f = new JFrame();
    f.add(new JScrollPane(textcomp));
    f.setSize(330,300);
    f.setVisible(true);
    
    doc.addUndoableEditListener(new UndoableEditListener() {
        public void undoableEditHappened(UndoableEditEvent evt) {
            undo.addEdit(evt.getEdit());
        }
    });
    
    textcomp.getActionMap().put("Undo",
        new AbstractAction("Undo") {
            public void actionPerformed(ActionEvent evt) {
                try {
                    if (undo.canUndo()) {
                        undo.undo();
                    }
                } catch (CannotUndoException e) {
                }
            }
       });
    
    textcomp.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
    
    textcomp.getActionMap().put("Redo",
        new AbstractAction("Redo") {
            public void actionPerformed(ActionEvent evt) {
                try {
                    if (undo.canRedo()) {
                        undo.redo();
                    }
                } catch (CannotRedoException e) {
                }
            }
        });
    
    textcomp.getInputMap().put(KeyStroke.getKeyStroke("control Y"), "Redo");

}}








14.113.Redo Undo
14.113.1.Undo EditorUndo Editor
14.113.2.Using the Undo Framework with Swing Text ComponentsUsing the Undo Framework with Swing Text Components
14.113.3.Undoable DrawingUndoable Drawing
14.113.4.Adding Undo and Redo to a Text Component
14.113.5.Bind the undo action to ctl-Z
14.113.6.Create a redo action and add it to the text component (JTextComponent)
14.113.7.Listen for undo and redo events
14.113.8.Create an undo action and add it to the text component