/** * Class utama dari aplikasi Notepad * * @author Andika Nugrahanto * @version 28/12/2020 */ import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Scanner; import java.io.*; public class Notepad extends JFrame implements ActionListener { private TextArea textArea = new TextArea("", 0,0, TextArea.SCROLLBARS_VERTICAL_ONLY); private MenuBar menuBar = new MenuBar(); // Membuat MenuBar private Menu file = new Menu(); // Membuat menu File private MenuItem newFile = new MenuItem(); // Opsi New private MenuItem openFile = new MenuItem(); // Opsi Open private MenuItem saveFile = new MenuItem(); // Opsi Save private MenuItem close = new MenuItem(); // Opsi Close public Notepad() { this.setSize(1280, 720); // Set ukuran Notepad this.setTitle("Java Notepad"); // Set Nama aplikasi setDefaultCloseOperation(EXIT_ON_CLOSE); // Set operasi penutupan aplikasi this.textArea.setFont(new Font("Century Gothic", Font.BOLD, 12)); // Set font default di TextArea this.getContentPane().setLayout(new BorderLayout()); this.getContentPane().add(textArea); // Menambah menu bar ke GUI this.setMenuBar(this.menuBar); this.menuBar.add(this.file); this.file.setLabel("File"); //Opsi New this.newFile.setLabel("New"); //label opsi this.newFile.addActionListener(this); //action listener supaya tahu ketika diklik this.newFile.setShortcut(new MenuShortcut(KeyEvent.VK_N, false)); // Shortcut ctrl + n this.file.add(this.newFile); // menambahkan ke menu "File" //Opsi Open this.openFile.setLabel("Open"); this.openFile.addActionListener(this); this.openFile.setShortcut(new MenuShortcut(KeyEvent.VK_O, false)); // Shortcut ctrl + o this.file.add(this.openFile); //Opsi Save this.saveFile.setLabel("Save"); this.saveFile.addActionListener(this); this.saveFile.setShortcut(new MenuShortcut(KeyEvent.VK_S, false)); // Shortcut ctrl + s this.file.add(this.saveFile); //Opsi Close this.close.setLabel("Close"); this.close.setShortcut(new MenuShortcut(KeyEvent.VK_F4, false)); // Shortcut ctrl + F4 this.close.addActionListener(this); this.file.add(this.close); } public void actionPerformed (ActionEvent e) { // Jika memilih Opsi Close if (e.getSource() == this.close) this.dispose(); // Dispose semua resource dan tutup aplikasi // Jika memilih opsi Open else if (e.getSource() == this.openFile) { JFileChooser open = new JFileChooser(); // Membuka file chooser int option = open.showOpenDialog(this); // Untuk mendapatkan opsi yang dipilih user (approve atau cancel) // Jika user klik OK, terdapat "APPROVE_OPTION" if (option == JFileChooser.APPROVE_OPTION) { this.textArea.setText(""); // Clear TextArea kemudian membuka isi File try { // Membuat Scanner untuk membaca File Scanner scan = new Scanner(new FileReader(open.getSelectedFile().getPath())); while (scan.hasNext()) this.textArea.append(scan.nextLine() + "\n"); } catch (Exception ex) { System.out.println(ex.getMessage()); } } } // Jika memilih opsi Save else if (e.getSource() == this.saveFile) { JFileChooser save = new JFileChooser(); // Membuka File Chooser int option = save.showSaveDialog(this); if (option == JFileChooser.APPROVE_OPTION) { try { BufferedWriter out = new BufferedWriter(new FileWriter(save.getSelectedFile().getPath())); out.write(this.textArea.getText()); out.close(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } } // Jika memilih opsi New else if (e.getSource() == this.newFile) { textArea.setText(""); } } public static void main(String args[]) { Notepad app = new Notepad(); app.setVisible(true); } }