Tugas 10 Text Editor Kelas PBO C

Text Editor adalah suatu jenis software komputer yang digunakan untuk menyunting teks biasa. Text editor ini dibedakan dengan pengolah kata (word processing) karena jenis software ini tidak mengatur dokumen atau fitur-fitur lain yang biasa digunakan dalam desktop publishing. Text editor disediakan oleh sistem operasi dan dapat digunakan untuk mengubah konfigurasi file serta source code bahasa pemrograman.

Pada kesempatan kali ini saya akan mencoba membuat text editor sederhana yang mengimplementasikan konsep object oriented programming menggunakan bahasa pemrograman Java. Saya hanya menggunakan 1 class saja yaitu class TextEditor  yang berfungsi untuk membuat text editor dengan segala perintahnya


Source Code Class TextEditor

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.plaf.metal.*;
import javax.swing.text.*;
 
/**
 * Class untuk membuat text editor.
 *
 * @author Thomas Felix
 * @version 1 Januari 2021
 */
 
public class TextEditor extends JFrame implements ActionListener
{
    // Komponen text
    JTextArea t;
   
    // Frame
    JFrame f;
   
    // Konstruktor
    TextEditor()
    {
        // Membuat frame aplikasi
        f = new JFrame("Text Editor");
       
        try
        {
            // Menggunakan metal look and feel
            UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
           
            // Menggunakan tema Ocean
            MetalLookAndFeel.setCurrentTheme(new OceanTheme());
        }
       
        catch (Exception e)
        {
           
        }
 
        // Membuat text area
        t = new JTextArea();
       
        // Membuat menubar
        JMenuBar mb = new JMenuBar();
       
        // Membuat menu File di dalam menubar
        JMenu m1 = new JMenu("File");
       
        // Di dalam menu File terdapat beberapa menu item
        JMenuItem mi1 = new JMenuItem("New");
        JMenuItem mi2 = new JMenuItem("Open");
        JMenuItem mi3 = new JMenuItem("Save");
        JMenuItem mi4 = new JMenuItem("Print");
       
        // Menambahkan action listener
        mi1.addActionListener(this);
        mi2.addActionListener(this);
        mi3.addActionListener(this);
        mi4.addActionListener(this);
       
        // Menambahkan menu-menu item ke menu File
        m1.add(mi1);
        m1.add(mi2);
        m1.add(mi3);
        m1.add(mi4);
       
        // Membuat menu Edit di dalam menubar
        JMenu m2 = new JMenu("Edit");
       
        // Di dalam menu Edit terdapat beberapa menu item
        JMenuItem mi5 = new JMenuItem("Cut");
        JMenuItem mi6 = new JMenuItem("Copy");
        JMenuItem mi7 = new JMenuItem("Paste");
       
        // Menambahkan action listener
        mi5.addActionListener(this);
        mi6.addActionListener(this);
        mi7.addActionListener(this);
       
        // Menambahkan menu-menu item ke menu Edit
        m2.add(mi5);
        m2.add(mi6);
        m2.add(mi7);
       
        // Membuat menu Close di dalam menubar
        JMenuItem mc = new JMenuItem("Close");
       
        // Menambahkan action listener
        mc.addActionListener(this);
       
        // Menambahkan menu File, Edit, Close ke menubar
        mb.add(m1);
        mb.add(m2);
        mb.add(mc);
       
        f.setJMenuBar(mb);
        f.add(t);
        f.setSize(550,550);
        f.show();
       
        // Teks akan berpindah ke baris berikutnya apabila mencapai batas text area
        t.setLineWrap(true);
       
        // Mengatur model penulisan kata apabila baris teks melampaui text area
        t.setWrapStyleWord(true);
       
        // Shortcut perintah menu
        mi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); // New
        mi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); // Open
        mi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); // Save
        mi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); // Print
        mi5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); // Cut
        mi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); // Copy
        mi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); // Paste
    }
   
    // Jika perintah menu dijalankan oleh user
    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"))
        {
            // Membuat object class JFileChooser
            JFileChooser j = new JFileChooser("f:");
           
            // Menggunakan fungsi showsSaveDialog untuk menampilkan menu penyimpanan.
            int r = j.showSaveDialog(null);
           
            if (r == JFileChooser.APPROVE_OPTION)
            {
                // Mengatur label ke jalur directory yang telah dipilih
                File fi = new File(j.getSelectedFile().getAbsolutePath());
               
                try
                {
                    // Membuat file writer
                    FileWriter wr = new FileWriter(fi, false);
                   
                    // Membuat buffered writer untuk menulis
                    BufferedWriter w = new BufferedWriter(wr);
                   
                    // Untuk menulis
                    w.write(t.getText());
                   
                    w.flush();
                    w.close();
                }
               
                catch (Exception evt)
                {
                    JOptionPane.showMessageDialog(f, evt.getMessage());
                }
            }
           
            // Jika user batal melakukan perintah Save
            else
            {
                JOptionPane.showMessageDialog(f, "User cancelled the operation.");
            }
        }
       
        else if (s.equals("Print"))
        {
            try
            {
                // Print file
                t.print();
            }
           
            catch (Exception evt)
            {
                JOptionPane.showMessageDialog(f, evt.getMessage());
            }
        }
       
        else if (s.equals("Open"))
        {
            // Membuat object class JFileChooser
            JFileChooser j = new JFileChooser("f:");
           
            // Menggunakan fungsi showsSaveDialog untuk menampilkan men
            int r = j.showOpenDialog(null);
           
            // Jika user select sebuah file
            if (r == JFileChooser.APPROVE_OPTION)
            {
                // Mengatur label ke jalur directory yang telah dipilih
                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);
                   
                    // Inisialisasi sl
                    sl = br.readLine();
                   
                    // Ambil inputan dari file
                    while ((s1 = br.readLine()) != null)
                    {
                        sl = sl + "\n" + s1;
                    }
                   
                    // Mengatur text
                    t.setText(sl);
                }
               
                catch (Exception evt)
                {
                    JOptionPane.showMessageDialog(f, evt.getMessage());
                }
            }
           
            // Jika user batal melakukan perintah Open
            else
            {
                JOptionPane.showMessageDialog(f, "User cancelled the operation.");
            }
        }
       
        else if (s.equals("New"))
        {
            t.setText("");
        }
       
        else if (s.equals("Close"))
        {
            f.setVisible(false);
        }
    }
   
    // Class main
    public static void main(String args[])
    {
        TextEditor te = new TextEditor();
    }
}


Screenshot Jalannya Program






Komentar

Postingan populer dari blog ini

Tugas 6 World of Zuul Kelas PBO C

Final Project / EAS Kelas PBO C

ETS RK B