import javax.swing.undo.*; class Notepad { //for using undo & redo UndoManager undo = new UndoManager(); UndoAction undoAction = new UndoAction(this); RedoAction redoAction = new RedoAction(this); Notepad() { getTextComponent().getDocument().addUndoableEditListener(new UndoableEditListener(){ public void undoableEditHappened(UndoableEditEvent e){ //Remember the edit and update the menus undo.addEdit(e.getEdit()); undoAction.update(); redoAction.update(); } }); } protected JMenu buildEditMenu() { JMenu editMenu = original(); if (editMenu.getItemCount() > 0) editMenu.addSeparator(); editMenu.add(undoAction); editMenu.add(redoAction); return editMenu; } protected JToolBar buildToolBar() { JToolBar toolBar = original(); if (toolBar.getComponentCount() > 0) toolBar.addSeparator(); toolBar.add(undoAction); toolBar.add(redoAction); return toolBar; } }