import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class SimpleNotepad extends JFrame implements ActionListener {
private JTextArea textArea;
private JMenuItem openItem, saveItem, exitItem;
public SimpleNotepad() {
// Frame settings
setTitle("Simple Notepad");
setSize(800, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Text area settings
textArea = new JTextArea();
JScrollPane scrollPane = new JScrollPane(textArea);
add(scrollPane, BorderLayout.CENTER);
// Menu bar creation
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
openItem = new JMenuItem("Open");
saveItem = new JMenuItem("Save");
exitItem = new JMenuItem("Exit");
openItem.addActionListener(this);
saveItem.addActionListener(this);
exitItem.addActionListener(this);
fileMenu.add(openItem);
fileMenu.add(saveItem);
fileMenu.add(exitItem);
menuBar.add(fileMenu);
setJMenuBar(menuBar);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == openItem) {
openFile();
} else if (e.getSource() == saveItem) {
saveFile();
} else if (e.getSource() == exitItem) {
System.exit(0);
}
}
private void openFile() {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showOpenDialog(this);
if (option == JFileChooser.APPROVE_OPTION) {
try (BufferedReader reader = new BufferedReader(new FileReader(fileChooser.getSelectedFile()))) {
textArea.read(reader, null);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "File could not be opened", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
private void saveFile() {
JFileChooser fileChooser = new JFileChooser();
int option = fileChooser.showSaveDialog(this);
if (option == JFileChooser.APPROVE_OPTION) {
try (FileWriter writer = new FileWriter(fileChooser.getSelectedFile())) {
textArea.write(writer);
} catch (IOException ex) {
JOptionPane.showMessageDialog(this, "File could not be saved", "Error", JOptionPane.ERROR_MESSAGE);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
SimpleNotepad notepad = new SimpleNotepad();
notepad.setVisible(true);
});
}
}