Java by API/javax.swing.undo/CannotRedoException

Материал из Java эксперт
Перейти к: навигация, поиск

catch CannotRedoException

   <source lang="java">

import java.awt.BorderLayout; import java.awt.ruponent; import java.awt.Container; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.undo.CannotRedoException; import javax.swing.undo.CannotUndoException; import javax.swing.undo.UndoManager; public class MainClass {

 public static void main(final String args[]) {
   JFrame frame = new JFrame("Undo Sample");
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   JTextArea textArea = new JTextArea();
   JScrollPane scrollPane = new JScrollPane(textArea);
   UndoManager manager = new UndoManager();
   textArea.getDocument().addUndoableEditListener(manager);
   JToolBar toolbar = new JToolBar();
   JButton undoButton = new JButton(new UndoAction(manager, (String) UIManager
       .get("AbstractUndoableEdit.undoText")));
   toolbar.add(undoButton);
   JButton redoButton = new JButton(new RedoAction(manager, (String) UIManager
       .get("AbstractUndoableEdit.redoText")));
   toolbar.add(redoButton);    
   
   Container content = frame.getContentPane();
   content.add(toolbar, BorderLayout.NORTH);
   content.add(scrollPane, BorderLayout.CENTER);
   frame.setSize(300, 150);
   frame.setVisible(true);
 }

} abstract class UndoRedoAction extends AbstractAction {

 UndoManager undoManager = new UndoManager();
 String errorMessage = "Cannot undo";
 String errorTitle = "Undo Problem";
 protected UndoRedoAction(UndoManager manager, String name) {
   super(name);
   undoManager = manager;
 }
 public void setErrorMessage(String newValue) {
   errorMessage = newValue;
 }
 public void setErrorTitle(String newValue) {
   errorTitle = newValue;
 }
 protected void showMessage(Object source) {
   if (source instanceof Component) {
     JOptionPane.showMessageDialog((Component) source, errorMessage, errorTitle,
         JOptionPane.WARNING_MESSAGE);
   } else {
     System.err.println(errorMessage);
   }
 }

} class UndoAction extends UndoRedoAction {

 public UndoAction(UndoManager manager, String name) {
   super(manager, name);
   setErrorMessage("Cannot undo");
   setErrorTitle("Undo Problem");
 }
 public void actionPerformed(ActionEvent actionEvent) {
   try {
     undoManager.undo();
   } catch (CannotUndoException cannotUndoException) {
     showMessage(actionEvent.getSource());
   }
 }

} class RedoAction extends UndoRedoAction {

 public RedoAction(UndoManager manager, String name) {
   super(manager, name);
   setErrorMessage("Cannot redo");
   setErrorTitle("Redo Problem");
 }
 public void actionPerformed(ActionEvent actionEvent) {
   try {
     undoManager.redo();
   } catch (CannotRedoException cannotRedoException) {
     showMessage(actionEvent.getSource());
   }
 }

}

      </source>