DESCARGAR
import java.awt.BorderLayout; 
import java.awt.GridLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JScrollPane; 
import javax.swing.JTextArea; 
import javax.swing.event.UndoableEditEvent; 
import javax.swing.event.UndoableEditListener; 
import javax.swing.undo.CannotRedoException; 
import javax.swing.undo.UndoManager; 
public class Deshacer extends JFrame  
{ 
  protected JTextArea textArea = new JTextArea(); 
  protected UndoManager undoManager = new UndoManager(); 
  protected JButton deshacerBoton = new JButton("Deshacer"); 
  protected JButton rehacerBoton = new JButton("Rehacer"); 
  public Deshacer() { 
    super("Prueba deshacer/rehacer");//nombre de la ventana 
    deshacerBoton.setEnabled(false); 
    rehacerBoton.setEnabled(false); 
    JPanel buttonPanel = new JPanel(new GridLayout()); 
    buttonPanel.add(deshacerBoton); 
    buttonPanel.add(rehacerBoton); 
    JScrollPane scroller = new JScrollPane(textArea); 
    getContentPane().add(buttonPanel, BorderLayout.NORTH); 
    getContentPane().add(scroller, BorderLayout.CENTER); 
    textArea.getDocument().addUndoableEditListener( 
        new UndoableEditListener() { 
          public void undoableEditHappened(UndoableEditEvent e) { 
            undoManager.addEdit(e.getEdit()); 
            updateButtons(); 
          } 
        }); 
    deshacerBoton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        try { 
          undoManager.undo(); 
        } catch (CannotRedoException cre) { 
          cre.printStackTrace(); 
        } 
        updateButtons(); 
      } 
    }); 
    rehacerBoton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
        try { 
          undoManager.redo(); 
        } catch (CannotRedoException cre) { 
          cre.printStackTrace(); 
        } 
        updateButtons(); 
      } 
    }); 
    setSize(400, 300); 
    setVisible(true); 
  } 
  public void updateButtons() { 
    deshacerBoton.setText("Se puede Deshacer"); 
    rehacerBoton.setText("Se puede Rehacer"); 
    deshacerBoton.setEnabled(undoManager.canUndo()); 
    rehacerBoton.setEnabled(undoManager.canRedo()); 
  } 
  public static void main(String argv[]) { 
    new Deshacer(); 
  } 
} 
 |