This example shows you how to incorporate and undo function in your application.


===================================================
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.undo.*;

public class undo {
static UndoManager undomanager;

static class UndoHandler implements UndoableEditListener {
public void undoableEditHappened(UndoableEditEvent e) {
if (undomanager != null) {
undomanager.addEdit(e.getEdit());
//System.out.println(e.getEdit());
}
}
}

public static void main(String args[]) {
// set up frames, panels, text areas
JFrame frame = new JFrame("Undo demo");
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
final JTextArea textarea = new JTextArea(10, 40);
JPanel textpanel = new JPanel();
textpanel.add(new JScrollPane(textarea));
textarea.getDocument().addUndoableEditListener(
new UndoHandler());

// create buttons and set up listeners for them
JPanel buttonpanel = new JPanel();
JButton startbutton = new JButton("Start Edits");
JButton undobutton = new JButton("Undo Edits");
startbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
undomanager = new UndoManager();
undomanager.setLimit(1000);
textarea.requestFocus();
}
});
undobutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (undomanager != null) {
undomanager.end();
undomanager.undo();
undomanager = null;
}
else {
Toolkit.getDefaultToolkit().beep();
}
textarea.requestFocus();
}
});
buttonpanel.add(startbutton);
buttonpanel.add(undobutton);
panel.add("North", textpanel);
panel.add("South", buttonpanel);

// make frame visible
frame.getContentPane().add("Center", panel);
frame.pack();
frame.setVisible(true);
}
}