Skip to main content

Undo Text using Ctrl Z in Java

Language


This tutorial will teach you how to create a program that can undo a text using a shortcut key of ctrl+z in java.

So, now let's start this tutorial!

1. Open JCreator or NetBeans and make a java program with a file name of undoCtrlZ.java.

2. Import the following package library:

  1. import java.awt.event.*; //used to access ActionEvent class
  2. import javax.swing.*; //used to access AbstractAction,JFrame, JScrollPane, JTextArea, and KeyStroke class
  3. import javax.swing.event.*; // used to access UndoableEditEvent and UndoableEditListener class
  4. import javax.swing.text.*;// used to access the Document and JTextComponent class
  5. import javax.swing.undo.*; // used to access CannotUndoException and UndoManager class

3. We will initialize variables in our Main, variable frame as JFrame, txtArea for JTextArea, undo as UndoManager and declare it as final because we will create an inner class on it, variable doc for the Document class.

  1. JFrame frame = new JFrame(); //instantiate frame
  2. JTextArea txtArea = new JTextArea(); //instantiate textArea
  3. final UndoManager undo = new UndoManager(); //instantiate an UndoManager
  4. Document doc = txtArea.getDocument(); //instantiate a Document class of the txtArea

4. Create an inner class for the UndoableEditEvent of the doc in our textArea. This will trigger that the textArea can be editable.

  1. doc.addUndoableEditListener(new UndoableEditListener() {
  2. public void undoableEditHappened(UndoableEditEvent evt) {
  3. undo.addEdit(evt.getEdit());
  4. }
  5. });

5. Create also an inner class that will have an undo event on the textArea. This will use the getActionMap method.

  1. txtArea.getActionMap().put("Undo", new AbstractAction("Undo") {
  2. public void actionPerformed(ActionEvent evt) {
  3. try {
  4. if (undo.canUndo()) {
  5. undo.undo();
  6. }
  7. } catch (CannotUndoException e) {
  8. }
  9. }
  10. });

To have a ctrl z shortcut for the undo. Have this code below:

  1. txtArea.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");

6. Lastly, add the components, set the size and visibility to true, and close its operation.

  1. txtArea.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
  2.  
  3. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  4. frame.getContentPane().add(new JScrollPane(txtArea));
  5. frame.setSize(380, 320);
  6. frame.setLocationRelativeTo(null);
  7. frame.setVisible(true);


Output:

output


Here's the full code of this tutorial:

  1. import java.awt.event.*; //used to access ActionEvent class
  2. import javax.swing.*; //used to access AbstractAction,JFrame, JScrollPane, JTextArea, and KeyStroke class
  3. import javax.swing.event.*; // used to access UndoableEditEvent and UndoableEditListener class
  4. import javax.swing.text.*;// used to access the Document and JTextComponent class
  5. import javax.swing.undo.*; // used to access CannotUndoException and UndoManager class
  6.  
  7.  
  8. public class undoCtrlZ {
  9. public static void main(String[] args) {
  10. JFrame frame = new JFrame("Ctrl+Z Undo"); //instantiate frame
  11. JTextArea txtArea = new JTextArea(); //instantiate textArea
  12. final UndoManager undo = new UndoManager(); //instantiate an UndoManager
  13. Document doc = txtArea.getDocument(); //instantiate a Document class of the txtArea
  14.  
  15. doc.addUndoableEditListener(new UndoableEditListener() {
  16. public void undoableEditHappened(UndoableEditEvent evt) {
  17. undo.addEdit(evt.getEdit());
  18. }
  19. });
  20.  
  21. txtArea.getActionMap().put("Undo", new AbstractAction("Undo") {
  22. public void actionPerformed(ActionEvent evt) {
  23. try {
  24. if (undo.canUndo()) {
  25. undo.undo();
  26. }
  27. } catch (CannotUndoException e) {
  28. }
  29. }
  30. });
  31.  
  32. txtArea.getInputMap().put(KeyStroke.getKeyStroke("control Z"), "Undo");
  33.  
  34. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  35. frame.getContentPane().add(new JScrollPane(txtArea));
  36. frame.setSize(380, 320);
  37. frame.setLocationRelativeTo(null);
  38. frame.setVisible(true);
  39. }
  40. }

For more inquiries and need programmer for your thesis systems in any kind of programming languages, just contact my number below.

Best Regards,

Engr. Lyndon Bermoy
IT Instructor/System Developer/Android Developer/Freelance Programmer
Mobile: 09488225971
Landline: 826-9296
E-mail:[email protected]

Add and Follow me on Facebook: https://www.facebook.com/donzzsky

Visit and like my page on Facebook at: https://www.facebook.com/BermzISware

Note: Due to the size or complexity of this submission, the author has submitted it as a .zip file to shorten your download time. After downloading it, you will need a program like Winzip to decompress it.

Virus note: All files are scanned once-a-day by SourceCodester.com for viruses, but new viruses come out every day, so no prevention program can catch 100% of them.

FOR YOUR OWN SAFETY, PLEASE:

1. Re-scan downloaded files using your personal virus checker before using it.
2. NEVER, EVER run compiled files (.exe's, .ocx's, .dll's etc.)--only run source code.

Add new comment

CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.