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);
}
}