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();
}
}
Komentar
Posting Komentar