Java Swing | Create a simple text editor

19 Apr, 2021
To create a simple text editor in Java Swing we will use a JTextArea, a JMenuBar and add JMenu to it and we will add JMenuItems. All the menu items will have actionListener to detect any action.There will be a menu bar and it will contain two menus and a button: 
File menuopen: this menuitem is used to open a filesave: this menuitem is used to save a fileprint : this menuitem is used to print the components of the text areanew : this menuitem is used to create a new blank fileEdit menucut: this menuitem is to cut the selected area and copy it to clipboardcopy: this menuitem is to copy the selected area to the clipboardpaste : this menuitem is to paste the text from the clipboard to the text areaClose : this button closes the frame
File menuopen: this menuitem is used to open a filesave: this menuitem is used to save a fileprint : this menuitem is used to print the components of the text areanew : this menuitem is used to create a new blank file
open: this menuitem is used to open a file
save: this menuitem is used to save a file
print : this menuitem is used to print the components of the text area
new : this menuitem is used to create a new blank file
Edit menucut: this menuitem is to cut the selected area and copy it to clipboardcopy: this menuitem is to copy the selected area to the clipboardpaste : this menuitem is to paste the text from the clipboard to the text area
cut: this menuitem is to cut the selected area and copy it to clipboard
copy: this menuitem is to copy the selected area to the clipboard
paste : this menuitem is to paste the text from the clipboard to the text area
Close : this button closes the frame
We have used file reader and file writer for more information on file reading and writing in Java. Please follow the below links:  
Different ways of Reading a text file in Java
File handling in Java using FileWriter and FileReader
Methods used: 
 
For more methods on JSwing components refer:  
Java Swing | JPanelJava Swing | JMenuBarCreating Frames using Swings in JavaJava Swing | JTextArea
Java Swing | JPanel
Java Swing | JMenuBar
Creating Frames using Swings in Java
Java Swing | JTextArea
Program to create a simple text editor:To create a simple text editor:  
First, we will create a frame f titled “editor” and apply a metal look and feel and set an ocean theme in it.
We will add a text area and a menubar with three menu File, Edit, and Close.The “File” option has 4 menu items new, open, save and print.“Edit” has 3 menu items cut, copy and paste. We will add an action listener to all the menu items(using addActionListener() function) to detect any action.
The “File” option has 4 menu items new, open, save and print.
“Edit” has 3 menu items cut, copy and paste. We will add an action listener to all the menu items(using addActionListener() function) to detect any action.
We will add the menu items to the menu and menu to the menubar using add() function and we would add the menubar to the frame using addJMenuBar() function.
We will add the text area to the frame using add function set the size of the frame to 500,500 using setSize(500,500) function and then display the frame using show function.
Here is how the functions of the menu will be invoked: 
On selecting the cut, copy, paste and print menu item the inbuilt functions of text area cut(), copy(), paste() and print() will be invoked.
On selecting “save” menu item, a file chooser will get opened which will show the save dialog after selecting a file the filewriter(buffered writer) would write the contents of the text area to the file and close the file writer and buffered writer.
On selecting “open” menu item, a file chooser will get opened which will show the open dialog after selecting a file a file reader and a buffered reader would read the file and set the text of the text area to the contents of the file.
If the “new” menu item is selected the text of the text area will be set to blank. If “close” menu item is selected the frame is closed by using the function isVisible(false).
Program:  
Java
// Java Program to create a text editor using javaimport java.awt.*;import javax.swing.*;import java.io.*;import java.awt.event.*;import javax.swing.plaf.metal.*;import javax.swing.text.*;class editor extends JFrame implements ActionListener {    // Text component    JTextArea t;     // Frame    JFrame f;     // Constructor    editor()    {        // Create a frame        f = new JFrame("editor");         try {            // Set metal look and feel            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");             // Set theme to ocean            MetalLookAndFeel.setCurrentTheme(new OceanTheme());        }        catch (Exception e) {        }         // Text component        t = new JTextArea();         // Create a menubar        JMenuBar mb = new JMenuBar();         // Create amenu for menu        JMenu m1 = new JMenu("File");         // Create menu items        JMenuItem mi1 = new JMenuItem("New");        JMenuItem mi2 = new JMenuItem("Open");        JMenuItem mi3 = new JMenuItem("Save");        JMenuItem mi9 = new JMenuItem("Print");         // Add action listener        mi1.addActionListener(this);        mi2.addActionListener(this);        mi3.addActionListener(this);        mi9.addActionListener(this);         m1.add(mi1);        m1.add(mi2);        m1.add(mi3);        m1.add(mi9);         // Create amenu for menu        JMenu m2 = new JMenu("Edit");         // Create menu items        JMenuItem mi4 = new JMenuItem("cut");        JMenuItem mi5 = new JMenuItem("copy");        JMenuItem mi6 = new JMenuItem("paste");         // Add action listener        mi4.addActionListener(this);        mi5.addActionListener(this);        mi6.addActionListener(this);         m2.add(mi4);        m2.add(mi5);        m2.add(mi6);         JMenuItem mc = new JMenuItem("close");         mc.addActionListener(this);         mb.add(m1);        mb.add(m2);        mb.add(mc);         f.setJMenuBar(mb);        f.add(t);        f.setSize(500, 500);        f.show();    }     // If a button is pressed    public void actionPerformed(ActionEvent e)    {        String s = e.getActionCommand();         if (s.equals("cut")) {            t.cut();        }        else if (s.equals("copy")) {            t.copy();        }        else if (s.equals("paste")) {            t.paste();        }        else if (s.equals("Save")) {            // Create an object of JFileChooser class            JFileChooser j = new JFileChooser("f:");             // Invoke the showsSaveDialog function to show the save dialog            int r = j.showSaveDialog(null);             if (r == JFileChooser.APPROVE_OPTION) {                 // Set the label to the path of the selected directory                File fi = new File(j.getSelectedFile().getAbsolutePath());                 try {                    // Create a file writer                    FileWriter wr = new FileWriter(fi, false);                     // Create buffered writer to write                    BufferedWriter w = new BufferedWriter(wr);                     // Write                    w.write(t.getText());                     w.flush();                    w.close();                }                catch (Exception evt) {                    JOptionPane.showMessageDialog(f, evt.getMessage());                }            }            // If the user cancelled the operation            else                JOptionPane.showMessageDialog(f, "the user cancelled the operation");        }        else if (s.equals("Print")) {            try {                // print the file                t.print();            }            catch (Exception evt) {                JOptionPane.showMessageDialog(f, evt.getMessage());            }        }        else if (s.equals("Open")) {            // Create an object of JFileChooser class            JFileChooser j = new JFileChooser("f:");             // Invoke the showsOpenDialog function to show the save dialog            int r = j.showOpenDialog(null);             // If the user selects a file            if (r == JFileChooser.APPROVE_OPTION) {                // Set the label to the path of the selected directory                File fi = new File(j.getSelectedFile().getAbsolutePath());                 try {                    // String                    String s1 = "", sl = "";                     // File reader                    FileReader fr = new FileReader(fi);                     // Buffered reader                    BufferedReader br = new BufferedReader(fr);                     // Initialize sl                    sl = br.readLine();                     // Take the input from the file                    while ((s1 = br.readLine()) != null) {                        sl = sl + "\n" + s1;                    }                     // Set the text                    t.setText(sl);                }                catch (Exception evt) {                    JOptionPane.showMessageDialog(f, evt.getMessage());                }            }            // If the user cancelled the operation            else                JOptionPane.showMessageDialog(f, "the user cancelled the operation");        }        else if (s.equals("New")) {            t.setText("");        }        else if (s.equals("close")) {            f.setVisible(false);        }    }     // Main class    public static void main(String args[])    {        editor e = new editor();    }}
Output:  
 
 
 
Note: The above programs might not run in an online IDE please use an offline compiler. 
ManasChhabra2
sweetyty
java-swing
Java
Java Programs
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array