Mega Code Archive

 
Categories / Java Tutorial / Swing
 

Create a redo action and add it to the text component (JTextComponent)

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) {     JTextComponent textcomp = new JTextArea();     final UndoManager undo = new UndoManager();     Document doc = textcomp.getDocument();     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");     JFrame frame = new JFrame();     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     frame.add(new JScrollPane(textcomp));     frame.setSize(380, 320);     frame.setLocationRelativeTo(null);     frame.setVisible(true);   } }