Задача: Добавление истории операций(undo&redo) в компонент
Исходник: Добавление операций отмены(undo) и повтора(redo) в текстовый компонент, язык: java [code #110, hits: 8081]
автор: - [добавлен: 12.05.2006]
  1. JTextArea textarea = new JTextArea();
  2. final UndoManager undo = new UndoManager();
  3. Document doc = textarea.getDocument();
  4.  
  5. //The next two lines should be in one line.
  6. doc.addUndoableEditListener(
  7. The next two lines should be in one line.
  8. public void undoableEditHappened(
  9. undo.addEdit(evt.getEdit());
  10. }
  11. });
  12.  
  13. textarea.getActionMap().put("Undo",
  14. new AbstractAction("Undo") {
  15. public void actionPerformed(ActionEvent evt) {
  16. try {
  17. if (undo.canUndo()) {
  18. undo.undo();
  19. }
  20. } catch (CannotUndoException e) {
  21. }
  22. }
  23. });
  24. textarea.getInputMap().put(KeyStroke.getKeyStroke(
  25. "control Z"), "Undo");
  26.  
  27. textarea.getActionMap().put("Redo",
  28. new AbstractAction("Redo") {
  29. public void actionPerformed(ActionEvent evt) {
  30. try {
  31. if (undo.canRedo()) {
  32. undo.redo();
  33. }
  34. } catch (CannotRedoException e) {
  35. }
  36. }
  37. });
  38. textarea.getInputMap().put(KeyStroke.getKeyStroke(
  39. "control Y"), "Redo");
Добавление javax.swing.undo & javax.swing.redo в компонент
Тестировалось на: java 1.5.0_04

+добавить реализацию