Java tutorial
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Panel; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; public class SaveYourDrawingToFile extends JFrame implements MouseListener, ActionListener { List<Point> displayList = new ArrayList<Point>(); String pathname = "data.dat"; JButton clearBtn = new JButton("Clear"); JButton saveBtn = new JButton("Save"); JButton restoreBtn = new JButton("Restore"); JButton quitBtn = new JButton("Quit"); public static void main(String args[]) { SaveYourDrawingToFile that = new SaveYourDrawingToFile(); that.setVisible(true); } public SaveYourDrawingToFile() { addMouseListener(this); setLayout(new BorderLayout()); Panel pan = new Panel(); clearBtn.addActionListener(this); pan.add(clearBtn); saveBtn.addActionListener(this); pan.add(saveBtn); restoreBtn.addActionListener(this); pan.add(restoreBtn); quitBtn.addActionListener(this); pan.add(quitBtn); add("North", pan); setSize(350, 200); } public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, getSize().width, getSize().height); g.setColor(Color.black); int i = 0; while (i < displayList.size()) { Point p0 = (Point) (displayList.get(i++)); Point p1 = (Point) (displayList.get(i++)); int x = Math.min(p0.x, p1.x); int y = Math.min(p0.y, p1.y); int w = Math.abs(p0.x - p1.x); int h = Math.abs(p0.y - p1.y); g.drawRect(x, y, w, h); } } public void mousePressed(MouseEvent e) { Point p = new Point(e.getX(), e.getY()); displayList.add(p); } public void mouseReleased(MouseEvent e) { Point p = new Point(e.getX(), e.getY()); displayList.add(p); repaint(); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void actionPerformed(ActionEvent e) { if (e.getSource() == clearBtn) { displayList = new Vector(); repaint(); } else if (e.getSource() == saveBtn) { try { FileOutputStream fos = new FileOutputStream(pathname); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(displayList); oos.flush(); oos.close(); fos.close(); } catch (Exception ex) { System.out.println("Trouble writing display list vector"); } } else if (e.getSource() == restoreBtn) { try { FileInputStream fis = new FileInputStream(pathname); ObjectInputStream ois = new ObjectInputStream(fis); displayList = (Vector) (ois.readObject()); ois.close(); fis.close(); repaint(); } catch (Exception ex) { System.out.println("Trouble reading display list vector"); } } else if (e.getSource() == quitBtn) { setVisible(false); dispose(); System.exit(0); } } }