content: import java.awt.*;
  import javax.swing.*;
  import java.awt.event.*;
  import java.io.*;
  import java.awt.datatransfer.*;
  
  public class Notepad extends JFrame implements ActionListener, WindowListener {
  	
  	JTextArea jta=new JTextArea();
  	File fnameContainer;
  	
  	public Notepad(){
  
  		Font fnt=new Font("Arial",Font.PLAIN,15);
  		Container con=getContentPane();
  		
  		JMenuBar jmb=new JMenuBar();
  		JMenu jmfile = new JMenu("File");
  		JMenu jmedit = new JMenu("Edit");
  		JMenu jmhelp = new JMenu("Help");
  		
  		con.setLayout(new BorderLayout());
  		//trying to add scrollbar
  		JScrollPane sbrText = new JScrollPane(jta);
  		sbrText.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
  		sbrText.setVisible(true);
  		
  		
  		jta.setFont(fnt);
  		jta.setLineWrap(true);
  		jta.setWrapStyleWord(true);
  		
  		con.add(sbrText);
  
  		createMenuItem(jmfile,"New");
  		createMenuItem(jmfile,"Open");
  		createMenuItem(jmfile,"Save");
  		jmfile.addSeparator();
  		createMenuItem(jmfile,"Exit");
  		
  		createMenuItem(jmedit,"Cut");
  		createMenuItem(jmedit,"Copy");
  		createMenuItem(jmedit,"Paste");
  		
  		createMenuItem(jmhelp,"About Notepad");
  		
  		jmb.add(jmfile);
  		jmb.add(jmedit);
  		jmb.add(jmhelp);
  		
  		setJMenuBar(jmb);
  		setIconImage(Toolkit.getDefaultToolkit().getImage("notepad.gif"));
  		addWindowListener(this);
  		setSize(500,500);
  		setTitle("Untitled.txt - Notepad");
  				
  		setVisible(true);
  	
  	}
  
  	public void createMenuItem(JMenu jm,String txt){
  		JMenuItem jmi=new JMenuItem(txt);
  		jmi.addActionListener(this);
  		jm.add(jmi);
  	}
  	
  	public void actionPerformed(ActionEvent e){	
  		JFileChooser jfc=new JFileChooser();
  		
  		if(e.getActionCommand().equals("New")){ 
  			//new
  			this.setTitle("Untitled.txt - Notepad");
  			jta.setText("");
  			fnameContainer=null;
  		}else if(e.getActionCommand().equals("Open")){
  			//open
  			int ret=jfc.showDialog(null,"Open");
  			
  			if(ret == JFileChooser.APPROVE_OPTION)
  			{
  				try{
  					File fyl=jfc.getSelectedFile();
  					OpenFile(fyl.getAbsolutePath());
  					this.setTitle(fyl.getName()+ " - Notepad");
  					fnameContainer=fyl;
  				}catch(IOException ers){}
  			}
  			
  		}else if(e.getActionCommand().equals("Save")){
  			//save
  			if(fnameContainer != null){
  				jfc.setCurrentDirectory(fnameContainer);		
  				jfc.setSelectedFile(fnameContainer);
  			}
  			else {
  				//jfc.setCurrentDirectory(new File("."));
  				jfc.setSelectedFile(new File("Untitled.txt"));
  			}
  			
  			int ret=jfc.showSaveDialog(null);
  				
  			if(ret == JFileChooser.APPROVE_OPTION){
  				try{
  					
  					File fyl=jfc.getSelectedFile();
  					SaveFile(fyl.getAbsolutePath());
  					this.setTitle(fyl.getName()+ " - Notepad");
  					fnameContainer=fyl;
  					
  				}catch(Exception ers2){}
  			}
  			
  		}else if(e.getActionCommand().equals("Exit")){
  			//exit
  			Exiting();
  		}else if(e.getActionCommand().equals("Copy")){
  			//copy
  			jta.copy();
  		}else if(e.getActionCommand().equals("Paste")){
  			//paste
  			jta.paste();
  		}else if(e.getActionCommand().equals("About Notepad")){ 
  			//about
  			JOptionPane.showMessageDialog(this,"Created by: Ferdinand Silva (http://ferdinandsilva.com)","Notepad",JOptionPane.INFORMATION_MESSAGE);
  		}else if(e.getActionCommand().equals("Cut")){
  			jta.cut();
  		}
  	}
  	
  	public void OpenFile(String fname) throws IOException {	
  		//open file code here
  		BufferedReader d=new BufferedReader(new InputStreamReader(new FileInputStream(fname)));
  		String l;
  		//clear the textbox
  		jta.setText("");
  	
  		setCursor(new Cursor(Cursor.WAIT_CURSOR));
  			
  		while((l=d.readLine())!= null) {
  			jta.setText(jta.getText()+l+"\r\n");
  		}
  		
  		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  		d.close();
  	}
  	
  	public void SaveFile(String fname) throws IOException {
  		setCursor(new Cursor(Cursor.WAIT_CURSOR));
  		DataOutputStream o=new DataOutputStream(new FileOutputStream(fname));
  		o.writeBytes(jta.getText());
  		o.close();		
  		setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  	}
  	
  	public void windowDeactivated(WindowEvent e){}
  	public void windowActivated(WindowEvent e){}
  	public void windowDeiconified(WindowEvent e){}
  	public void windowIconified(WindowEvent e){}
  	public void windowClosed(WindowEvent e){}
  	
  	public void windowClosing(WindowEvent e) {
  		Exiting();
  	}
  	
  	public void windowOpened(WindowEvent e){}
  	
  	public void Exiting() {
  		System.exit(0);
  	}
  	
  	public static void main (String[] args) {
  		Notepad notp=new Notepad();	
  	}
  			
  }
  