Answer:
Java program is given below
Explanation:
JavaPadGUI.java
package javapad.gui;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class JavaPadGUI extends JFrame implements ActionListener{
//constants
private static final String TITLE = "Macrosoft JavaPad XP";
private static final String SLOGAN = "Macrosoft: Resistance is futile";
//button names
private static final String NEW = "New";
private static final String LOAD = "Load";
private static final String SAVE = "Save";
private static final String QUIT = "Quit";
private static final String FILENAME = "hardcode.txt";
//messages
private static final String QUIT_MSG = "Quitting, Save?";
private static final String LOAD_ERR = "Could not access file " + FILENAME;
//fields
private JTextArea txtContent;
private JButton butNew, butLoad, butSave, butQuit;
public JavaPadGUI()
{
super(TITLE);
createUI();
setSize(new Dimension(400, 300));
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void createUI()
{
Container c = getContentPane();
c.setLayout(new BorderLayout(30,30));
//create the buttons panel
JPanel butPanel = new JPanel();
butPanel.add(butNew = new JButton(NEW));
butPanel.add(butLoad = new JButton(LOAD));
butPanel.add(butSave = new JButton(SAVE));
butPanel.add(butQuit = new JButton(QUIT));
//set command names for the buttons, these will be when button is clicked
butNew.setActionCommand(NEW);
butLoad.setActionCommand(LOAD);
butSave.setActionCommand(SAVE);
butQuit.setActionCommand(QUIT);
JPanel sloganPanel = new JPanel();
sloganPanel.add(new JLabel(SLOGAN));
//create textarea with scrollbar
txtContent = new JTextArea(15, 25);
txtContent.setLineWrap(true);
JScrollPane scroll = new JScrollPane(txtContent);
//now add all components
c.add(butPanel, BorderLayout.NORTH);
c.add(scroll, BorderLayout.CENTER);
c.add(sloganPanel, BorderLayout.SOUTH);
//set the actionlistner to buttons to handle button click event
butNew.addActionListener(this);
butLoad.addActionListener(this);
butSave.addActionListener(this);
butQuit.addActionListener(this);
}
public void actionPerformed(ActionEvent e)
{
String cmd = e.getActionCommand();
if(cmd.equals(NEW))
txtContent.setText("");
else if (cmd.equals(LOAD))
load();
else if(cmd.equals(SAVE))
save();
else if (cmd.equals(QUIT))
quit();
}
private void quit()
{
int option = JOptionPane.showConfirmDialog(this, QUIT_MSG);
if(option == JOptionPane.YES_OPTION)
{
save();
}
System.exit(0);
}
private void save()
{
try {
PrintWriter w = new PrintWriter(new File(FILENAME));
w.write(txtContent.getText());
w.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(this,"I/O Error", LOAD_ERR, JOptionPane.ERROR_MESSAGE);
}
}
private void load()
{
try {
Scanner s = new Scanner(new File(FILENAME));
String str = "";
while(s.hasNextLine())
str += s.nextLine();
txtContent.setText(str);
s.close();
} catch (FileNotFoundException e) {
JOptionPane.showMessageDialog(this, LOAD_ERR, "I/O Error",JOptionPane.ERROR_MESSAGE);
}
}
}
RunJavaPad.java
package javapad;
import javapad.gui.JavaPadGUI;
public class RunJavaPad {
public static void main(String[] args) {
JavaPadGUI gui = new JavaPadGUI();
gui.setVisible(true);
}
}