Dwinanda

Text Editor

Jan 5th, 2021
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.85 KB | None | 0 0
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.io.*;
  4. import java.awt.event.*;
  5. import javax.swing.plaf.metal.*;
  6. import javax.swing.text.*;
  7.  
  8. /**
  9.  * Class untuk membuat text editor.
  10.  *
  11.  * @author Dwinanda Bagoes Ansori
  12.  * @version 5 Januari 2021
  13.  */
  14.  
  15. public class TextEditor extends JFrame implements ActionListener
  16. {
  17.     // Komponen text
  18.     JTextArea t;
  19.    
  20.     // Frame
  21.     JFrame f;
  22.    
  23.     // Konstruktor
  24.     TextEditor()
  25.     {
  26.         // Membuat frame aplikasi
  27.         f = new JFrame("Text Editor");
  28.        
  29.         try
  30.         {
  31.             // Menggunakan metal look and feel
  32.             UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
  33.            
  34.             // Menggunakan tema Ocean
  35.             MetalLookAndFeel.setCurrentTheme(new OceanTheme());
  36.         }
  37.        
  38.         catch (Exception e)
  39.         {
  40.            
  41.         }
  42.  
  43.         // Membuat text area
  44.         t = new JTextArea();
  45.        
  46.         // Membuat menubar
  47.         JMenuBar mb = new JMenuBar();
  48.        
  49.         // Membuat menu File di dalam menubar
  50.         JMenu m1 = new JMenu("File");
  51.        
  52.         // Di dalam menu File terdapat beberapa menu item
  53.         JMenuItem mi1 = new JMenuItem("New");
  54.         JMenuItem mi2 = new JMenuItem("Open");
  55.         JMenuItem mi3 = new JMenuItem("Save");
  56.         JMenuItem mi4 = new JMenuItem("Print");
  57.        
  58.         // Menambahkan action listener
  59.         mi1.addActionListener(this);
  60.         mi2.addActionListener(this);
  61.         mi3.addActionListener(this);
  62.         mi4.addActionListener(this);
  63.        
  64.         // Menambahkan menu-menu item ke menu File
  65.         m1.add(mi1);
  66.         m1.add(mi2);
  67.         m1.add(mi3);
  68.         m1.add(mi4);
  69.        
  70.         // Membuat menu Edit di dalam menubar
  71.         JMenu m2 = new JMenu("Edit");
  72.        
  73.         // Di dalam menu Edit terdapat beberapa menu item
  74.         JMenuItem mi5 = new JMenuItem("Cut");
  75.         JMenuItem mi6 = new JMenuItem("Copy");
  76.         JMenuItem mi7 = new JMenuItem("Paste");
  77.        
  78.         // Menambahkan action listener
  79.         mi5.addActionListener(this);
  80.         mi6.addActionListener(this);
  81.         mi7.addActionListener(this);
  82.        
  83.         // Menambahkan menu-menu item ke menu Edit
  84.         m2.add(mi5);
  85.         m2.add(mi6);
  86.         m2.add(mi7);
  87.        
  88.         // Membuat menu Close di dalam menubar
  89.         JMenuItem mc = new JMenuItem("Close");
  90.        
  91.         // Menambahkan action listener
  92.         mc.addActionListener(this);
  93.        
  94.         // Menambahkan menu File, Edit, Close ke menubar
  95.         mb.add(m1);
  96.         mb.add(m2);
  97.         mb.add(mc);
  98.        
  99.         f.setJMenuBar(mb);
  100.         f.add(t);
  101.         f.setSize(550,550);
  102.         f.show();
  103.        
  104.         // Teks akan berpindah ke baris berikutnya apabila mencapai batas text area
  105.         t.setLineWrap(true);
  106.        
  107.         // Mengatur model penulisan kata apabila baris teks melampaui text area
  108.         t.setWrapStyleWord(true);
  109.        
  110.         // Shortcut perintah menu
  111.         mi1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, ActionEvent.CTRL_MASK)); // New
  112.         mi2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, ActionEvent.CTRL_MASK)); // Open
  113.         mi3.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, ActionEvent.CTRL_MASK)); // Save
  114.         mi4.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, ActionEvent.CTRL_MASK)); // Print
  115.         mi5.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X, ActionEvent.CTRL_MASK)); // Cut
  116.         mi6.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK)); // Copy
  117.         mi7.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, ActionEvent.CTRL_MASK)); // Paste
  118.     }
  119.    
  120.     // Jika perintah menu dijalankan oleh user
  121.     public void actionPerformed(ActionEvent e)
  122.     {
  123.         String s = e.getActionCommand();
  124.        
  125.         if (s.equals("Cut"))
  126.         {
  127.             t.cut();
  128.         }
  129.        
  130.         else if (s.equals("Copy"))
  131.         {
  132.             t.copy();
  133.         }
  134.        
  135.         else if (s.equals("Paste"))
  136.         {
  137.             t.paste();
  138.         }
  139.        
  140.         else if (s.equals("Save"))
  141.         {
  142.             // Membuat object class JFileChooser
  143.             JFileChooser j = new JFileChooser("f:");
  144.            
  145.             // Menggunakan fungsi showsSaveDialog untuk menampilkan menu penyimpanan.
  146.             int r = j.showSaveDialog(null);
  147.            
  148.             if (r == JFileChooser.APPROVE_OPTION)
  149.             {
  150.                 // Mengatur label ke jalur directory yang telah dipilih
  151.                 File fi = new File(j.getSelectedFile().getAbsolutePath());
  152.                
  153.                 try
  154.                 {
  155.                     // Membuat file writer
  156.                     FileWriter wr = new FileWriter(fi, false);
  157.                    
  158.                     // Membuat buffered writer untuk menulis
  159.                     BufferedWriter w = new BufferedWriter(wr);
  160.                    
  161.                     // Untuk menulis
  162.                     w.write(t.getText());
  163.                    
  164.                     w.flush();
  165.                     w.close();
  166.                 }
  167.                
  168.                 catch (Exception evt)
  169.                 {
  170.                     JOptionPane.showMessageDialog(f, evt.getMessage());
  171.                 }
  172.             }
  173.            
  174.             // Jika user batal melakukan perintah Save
  175.             else
  176.             {
  177.                 JOptionPane.showMessageDialog(f, "User cancelled the operation.");
  178.             }
  179.         }
  180.        
  181.         else if (s.equals("Print"))
  182.         {
  183.             try
  184.             {
  185.                 // Print file
  186.                 t.print();
  187.             }
  188.            
  189.             catch (Exception evt)
  190.             {
  191.                 JOptionPane.showMessageDialog(f, evt.getMessage());
  192.             }
  193.         }
  194.        
  195.         else if (s.equals("Open"))
  196.         {
  197.             // Membuat object class JFileChooser
  198.             JFileChooser j = new JFileChooser("f:");
  199.            
  200.             // Menggunakan fungsi showsSaveDialog untuk menampilkan men
  201.             int r = j.showOpenDialog(null);
  202.            
  203.             // Jika user select sebuah file
  204.             if (r == JFileChooser.APPROVE_OPTION)
  205.             {
  206.                 // Mengatur label ke jalur directory yang telah dipilih
  207.                 File fi = new File(j.getSelectedFile().getAbsolutePath());
  208.                
  209.                 try
  210.                 {
  211.                     // String
  212.                     String s1 = "", sl = "";
  213.                    
  214.                     // File reader
  215.                     FileReader fr = new FileReader(fi);
  216.                    
  217.                     // Buffered reader
  218.                     BufferedReader br = new BufferedReader(fr);
  219.                    
  220.                     // Inisialisasi sl
  221.                     sl = br.readLine();
  222.                    
  223.                     // Ambil inputan dari file
  224.                     while ((s1 = br.readLine()) != null)
  225.                     {
  226.                         sl = sl + "\n" + s1;
  227.                     }
  228.                    
  229.                     // Mengatur text
  230.                     t.setText(sl);
  231.                 }
  232.                
  233.                 catch (Exception evt)
  234.                 {
  235.                     JOptionPane.showMessageDialog(f, evt.getMessage());
  236.                 }
  237.             }
  238.            
  239.             // Jika user batal melakukan perintah Open
  240.             else
  241.             {
  242.                 JOptionPane.showMessageDialog(f, "User cancelled the operation.");
  243.             }
  244.         }
  245.        
  246.         else if (s.equals("New"))
  247.         {
  248.             t.setText("");
  249.         }
  250.        
  251.         else if (s.equals("Close"))
  252.         {
  253.             f.setVisible(false);
  254.         }
  255.     }
  256.    
  257.     // Class main
  258.     public static void main(String args[])
  259.     {
  260.         TextEditor te = new TextEditor();
  261.     }
  262. }
Advertisement
Add Comment
Please, Sign In to add comment