Appletグラフィックスプログラム


右クリックして機能メニューが表示されます..
 
 import java.applet.Applet;
 import java.awt.BasicStroke;
 import java.awt.Button;
 import java.awt.Canvas;
 import java.awt.Choice;
 import java.awt.Color;
 import java.awt.Container;
 import java.awt.Cursor;
 import java.awt.Dimension;
 import java.awt.FileDialog;
 import java.awt.FlowLayout;
 import java.awt.Frame;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
 import java.awt.Image;
 import java.awt.Label;
 import java.awt.MediaTracker;
 import java.awt.MenuItem;
 import java.awt.Panel;
 import java.awt.PopupMenu;
 import java.awt.Toolkit;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 import java.awt.event.ItemEvent;
 import java.awt.event.ItemListener;
 import java.awt.event.KeyAdapter;
 import java.awt.event.KeyEvent;
 import java.awt.event.MouseAdapter;
 import java.awt.event.MouseEvent;
 import java.awt.event.MouseListener;
 import java.awt.event.MouseMotionAdapter;
 import java.awt.event.MouseMotionListener;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.geom.Ellipse2D;
 import java.awt.geom.Ellipse2D.Double;
 import java.awt.geom.Line2D;
 import java.awt.geom.Rectangle2D;
 import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.PrintStream;
 import java.io.Serializable;
 import java.util.Vector;
 import javax.imageio.ImageIO;
 import javax.swing.JColorChooser;
 import javax.swing.JPanel;
 
 public class DrawImage extends Applet
   implements ItemListener, MouseListener, MouseMotionListener, ActionListener
 {
   private static final long serialVersionUID = 1L;
   int count = 6;
   Vector v = new Vector();
   Image[] img = new Image[this.count];
 
   int myWidth = 0; int myHeight = 0;
   int widthcount = 0;
 
   boolean[] b = new boolean[this.count];
   int[] width = new int[this.count]; int[] height = new int[this.count]; int[] w = new int[this.count];
   int[] h = new int[this.count]; int[] wid = new int[this.count]; int[] hei = new int[this.count];
   int[] ww = new int[this.count]; int[] hh = new int[this.count];
 
   int startX = 0; int startY = 0; int endX = 0; int endY = 0;
   Canvas startObj = null; Canvas endObj = null;
   String drawclear = "";
   int clickX = 0; int clickY = 0; int moveX = 0; int moveY = 0;
 
   DrawImage.canvas[] can = null;
   DrawImage.myCanvas[] mycan = new DrawImage.myCanvas[this.count];
   Canvas curcan = null;
   Canvas curdelcan = null;
   Image curimg = null;
 
   JPanel jp = new JPanel(null);
   MediaTracker mt = new MediaTracker(this);
 
   PopupMenu popMenu2 = new PopupMenu();
   MenuItem menuItem1 = null;
   MenuItem menuItem2 = null;
   MenuItem menuItem3 = null;
   MenuItem menuItem4 = null;
   MenuItem menuItem5 = null;
 
   int x = -1; int y = -1;
   int con = 1;
   int Econ = 5;
 
   int toolFlag = 0;
 
   Color c = new Color(0, 0, 0);
 
   BasicStroke size = new BasicStroke(this.con, 0, 
     2);
   DrawImage.Point cutflag = new DrawImage.Point(-1, -1, this.c, 6, this.con);
 
   Vector paintInfo = null;
   int n = 1;
 
   FileInputStream picIn = null;
   FileOutputStream picOut = null;
 
   ObjectInputStream VIn = null;
   ObjectOutputStream VOut = null;
   Panel toolPanel;
   Button eraser;
   Button drLine;
   Button drCircle;
   Button drRect;
   Button clear;
   Button pen;
   Choice ColChoice;
   Choice SizeChoice;
   Choice EraserChoice;
   Button colchooser;
   Label   ;
   Label   B;
   Label   E;
   Button openPic;
   Button savePic;
   FileDialog openPicture;
   BufferedImage bi = null;
   Graphics2D g2d = null;
 
   public void init()
   {
     int width2 = Toolkit.getDefaultToolkit().getScreenSize().width;
     int height2 = Toolkit.getDefaultToolkit().getScreenSize().height;
 
     this.bi = new BufferedImage(width2, height2, 1);
 
     this.img[0] = getImage(getCodeBase(), "image/1.gif");
     this.img[1] = getImage(getCodeBase(), "image/2.gif");
     this.img[2] = getImage(getCodeBase(), "image/3.gif");
     this.img[3] = getImage(getCodeBase(), "4.gif");
     this.img[4] = getImage(getCodeBase(), "5.gif");
     this.img[5] = getImage(getCodeBase(), "6.gif");
 
     resize(800, 600);
     setLayout(null);
 
     for (int i = 0; i < this.img.length; ++i) {
       this.mt.addImage(this.img[i], 0);
     }
     try
     {
       this.mt.waitForAll();
     }
     catch (Exception ex)
     {
       System.err.println(ex.toString());
     }
 
     add(this.jp);
     this.jp.setBounds(0, 0, 800, 80);
 
     for (int i = 0; i < this.img.length; ++i)
     {
       this.mycan[i] = new DrawImage.myCanvas(this.img[i]);
       this.width[i] = this.img[i].getWidth(this);
       this.height[i] = this.img[i].getHeight(this);
       this.jp.add(this.mycan[i]);
       this.mycan[i].setBounds(100 + 5 * (i + 1) + this.widthcount, 5, 
         this.img[i].getWidth(this), this.img[i].getHeight(this));
      this.widthcount += this.img[i].getWidth(this);
     }
 
     this.menuItem1 = new MenuItem("       ");
     this.menuItem2 = new MenuItem("       ");
     this.menuItem3 = new MenuItem("    ");
 
     this.menuItem4 = new MenuItem("       ");
     this.menuItem5 = new MenuItem("       ");
 
     this.popMenu2.add(this.menuItem1);
     this.popMenu2.add(this.menuItem2);
     this.popMenu2.add(this.menuItem3);
     this.popMenu2.addSeparator();
     this.popMenu2.add(this.menuItem4);
     this.popMenu2.add(this.menuItem5);
 
     add(this.popMenu2);
 
     this.menuItem1.addActionListener(this);
     this.menuItem2.addActionListener(this);
     this.menuItem3.addActionListener(this);
     this.menuItem4.addActionListener(this);
     this.menuItem5.addActionListener(this);
 
     this.toolPanel = new Panel(null);
     this.toolPanel.setLayout(new FlowLayout());
 
     this.paintInfo = new Vector();
 
     this.ColChoice = new Choice();
     this.ColChoice.add("black");
     this.ColChoice.add("red");
     this.ColChoice.add("blue");
     this.ColChoice.add("green");
     this.ColChoice.addItemListener(this);
 
     this.SizeChoice = new Choice();
     this.SizeChoice.add("1");
     this.SizeChoice.add("3");
     this.SizeChoice.add("5");
     this.SizeChoice.add("7");
     this.SizeChoice.add("9");
     this.SizeChoice.addItemListener(this);
 
     this.EraserChoice = new Choice();
     this.EraserChoice.add("5");
     this.EraserChoice.add("9");
     this.EraserChoice.add("13");
     this.EraserChoice.add("17");
     this.EraserChoice.addItemListener(this);
 
     this.clear = new Button("  ");
     this.eraser = new Button("  ");
     this.pen = new Button("  ");
     this.drLine = new Button("   ");
     this.drCircle = new Button("   ");
     this.drRect = new Button("   ");
 
     this.openPic = new Button("    ");
     this.savePic = new Button("    ");
 
    this.colchooser = new Button("     ");
 
     this.clear.addActionListener(this);
     this.eraser.addActionListener(this);
     this.pen.addActionListener(this);
     this.drLine.addActionListener(this);
     this.drCircle.addActionListener(this);
     this.drRect.addActionListener(this);
     this.openPic.addActionListener(this);
     this.savePic.addActionListener(this);
     this.colchooser.addActionListener(this);
 
     this.   = new Label("    ", 1);
     this.  B = new Label("    ", 1);
     this.  E = new Label("    ", 1);
 
     this.toolPanel.add(this.openPic);
     this.toolPanel.add(this.savePic);
 
     this.toolPanel.add(this.pen);
     this.toolPanel.add(this.drLine);
     this.toolPanel.add(this.drCircle);
     this.toolPanel.add(this.drRect);
 
     this.toolPanel.add(this.  );
     this.toolPanel.add(this.ColChoice);
     this.toolPanel.add(this.  B);
     this.toolPanel.add(this.SizeChoice);
     this.toolPanel.add(this.colchooser);
 
     this.toolPanel.add(this.eraser);
     this.toolPanel.add(this.  E);
     this.toolPanel.add(this.EraserChoice);
 
     this.toolPanel.add(this.clear);
 
     add(this.toolPanel);
     this.toolPanel.setBounds(0, 0, 900, 80);
     this.toolPanel.setBackground(Color.black);
     this.toolPanel.setVisible(false);
 
     addMouseListener(this);
     addMouseMotionListener(this);
   }
 
   public void itemStateChanged(ItemEvent e)
   {
     if (e.getSource() == this.ColChoice)
     {
       String name = this.ColChoice.getSelectedItem();
 
       if (name == "black")
       {
         this.c = new Color(0, 0, 0);
       }
       else if (name == "red")
       {
         this.c = new Color(255, 0, 0);
       }
       else if (name == "green")
       {
         this.c = new Color(0, 255, 0);
       } else {
         if (name != "blue")
           return;
         this.c = new Color(0, 0, 255);
       }
     }
     else if (e.getSource() == this.SizeChoice)
     {
       String selected = this.SizeChoice.getSelectedItem();
 
       if (selected == "1")
       {
         this.con = 1;
       }
       else if (selected == "3")
       {
         this.con = 3;
       }
       else if (selected == "5")
       {
         this.con = 5;
       }
       else if (selected == "7")
       {
         this.con = 7;
       }
       else if (selected == "9")
       {
         this.con = 9;
       }
       this.size = 
         new BasicStroke(this.con, 0, 
         2);
     } else {
       if (e.getSource() != this.EraserChoice)
         return;
       String Esize = this.EraserChoice.getSelectedItem();
 
       if (Esize == "5")
       {
         this.Econ = 10;
       }
       else if (Esize == "9")
       {
         this.Econ = 18;
       }
       else if (Esize == "13")
       {
         this.Econ = 26;
       } else {
         if (Esize != "17")
           return;
         this.Econ = 51;
       }
     }
   }
 
   public void actionPerformed(ActionEvent e)
   {
     if (e.getSource() == this.menuItem1)
     {
       this.jp.setVisible(false);
       this.toolPanel.setVisible(true);
       repaint();
     }
     else if (e.getSource() == this.menuItem2)
     {
       this.jp.setVisible(true);
       this.toolPanel.setVisible(false);
       repaint();
     }
     else if (e.getSource() != this.menuItem3)
     {
       if (e.getSource() == this.menuItem4)
       {
         this.toolPanel.setVisible(true);
         repaint();
       }
       else if (e.getSource() == this.menuItem5)
       {
         this.toolPanel.setVisible(false);
         repaint();
       }
     }
 
     if (e.getSource() == this.pen)
     {
       this.toolFlag = 0;
     }
 
     if (e.getSource() == this.eraser)
     {
      this.toolFlag = 1;
     }
 
     if (e.getSource() == this.clear)
     {
       this.toolFlag = 2;
       this.paintInfo.removeAllElements();
       repaint();
     }
 
     if (e.getSource() == this.drLine)
     {
       this.toolFlag = 3;
     }
 
     if (e.getSource() == this.drCircle)
     {
       this.toolFlag = 4;
     }
 
     if (e.getSource() == this.drRect)
     {
       this.toolFlag = 5;
     }
 
     if (e.getSource() == this.colchooser)
     {
       Color newColor = JColorChooser.showDialog(this, "   ", this.c);
       this.c = newColor;
     }
 
     if (e.getSource() == this.openPic)
     {
    	 Frame f = new DrawImage.fileDialog("File Dialog Demo!");
       f.setVisible(false);
       f.setSize(100, 100);
       FileDialog fd1 = new FileDialog(f, "File Dialog", 0);
       fd1.setVisible(true);
       try
       {
         this.curimg = ImageIO.read(new File(fd1.getDirectory(), fd1.getFile()));
 
         Canvas ca = new DrawImage.canvas(this.curimg);
         add(ca);
         ca.setBounds(100, 200, this.curimg.getWidth(this), 
           this.curimg.getHeight(this));
         validate();
         this.curcan = null;
       }
       catch (IOException e1)
       {
         e1.printStackTrace();
       }
 
     }
 
     if (e.getSource() != this.savePic)
       return;
     Frame f = new DrawImage.fileDialog("File Dialog Demo!");
     f.setVisible(false);
     f.setSize(100, 100);
 
     FileDialog fd = new FileDialog(f, "File Dialog", 1);
     fd.setVisible(true);
     try
     {
       if (fd.getFile() == null)
         return;
       String pathStr = fd.getDirectory();
 
       pathStr = pathStr.replace("\\", "\\\\");
       String path = pathStr + fd.getFile();
 
       ImageIO.write(this.bi, "jpg", new File(path));
     }
     catch (IOException e2)
     {
       e2.printStackTrace();
     }
   }
 
   public void mouseClicked(MouseEvent e)
   {
     clickhere(e);
   }
 
   public void mouseEntered(MouseEvent e)
   {
   }
 
   public void mouseExited(MouseEvent e)
   {
   }
 
   public void update(Graphics g)
   {
     paint(g);
   }
 
   public void mousePressed(MouseEvent e)
   {
     DrawImage.Point p2;
     switch (this.toolFlag)
     {
     case 3:
       this.x = e.getX();
       this.y = e.getY();
       p2 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p2);
       break;
     case 4:
       this.x = e.getX();
       this.y = e.getY();
       p2 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p2);
       break;
     case 5:
       this.x = e.getX();
       this.y = e.getY();
       p2 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p2);
     }
   }
 
   public void mouseReleased(MouseEvent e)
   {
     if ((e.getButton() == 3) && (e.getClickCount() == 2))
     {
       this.popMenu2.show(e.getComponent(), e.getX(), e.getY());
     }
     DrawImage.Point p3;
     switch (this.toolFlag)
     {
     case 0:
       this.paintInfo.addElement(this.cutflag);
       break;
     case 1:
       this.paintInfo.addElement(this.cutflag);
       break;
     case 3:
       this.x = e.getX();
       this.y = e.getY();
       p3 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p3);
       this.paintInfo.addElement(this.cutflag);
       repaint();
       break;
     case 4:
       this.x = e.getX();
       this.y = e.getY();
       p3 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p3);
       this.paintInfo.addElement(this.cutflag);
       repaint();
       break;
     case 5:
       this.x = e.getX();
       this.y = e.getY();
       p3 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p3);
       this.paintInfo.addElement(this.cutflag);
       repaint();
     case 2:
     }
   }
 
   public void mouseDragged(MouseEvent e)
   {
     DrawImage.Point p1;
     switch (this.toolFlag)
     {
     case 0:
       this.x = e.getX();
       this.y = e.getY();
       p1 = new DrawImage.Point(this.x, this.y, this.c, this.toolFlag, this.con);
       this.paintInfo.addElement(p1);
       repaint();
       break;
     case 1:
       this.x = e.getX();
       this.y = e.getY();
       p1 = new DrawImage.Point(this.x, this.y, null, this.toolFlag, this.Econ);
       this.paintInfo.addElement(p1);
       repaint();
     }
   }
 
   public void mouseMoved(MouseEvent e)
   {
     if (!(this.toolPanel.isVisible()))
       return;
     setCursor(new Cursor(1));
   }
 
   public void clickhere(MouseEvent e)
   {
     if (this.curcan == null)
       return;
     if (e.getModifiers() != 4)
       return;
     Canvas ca = new DrawImage.canvas(this.curimg);
     add(ca);
     ca.setBounds(e.getX(), e.getY(), this.curimg.getWidth(this), 
       this.curimg.getHeight(this));
     validate();
     this.curcan = null;
   }
 
   public void paint(Graphics g)
   {
     this.g2d = ((Graphics2D)g);
     this.g2d = ((Graphics2D)this.bi.getGraphics());
 
    this.n = this.paintInfo.size();
 
     if (this.toolFlag == 2)
     {
       g.clearRect(0, 0, getSize().width, getSize().height);
       this.g2d.clearRect(0, 0, getSize().width, getSize().height);
     }
 
     for (int i = 0; i < this.n - 1; ++i)
     {
       DrawImage.Point p1 = (DrawImage.Point)this.paintInfo.elementAt(i);
       DrawImage.Point p2 = (DrawImage.Point)this.paintInfo.elementAt(i + 1);
       this.size = 
         new BasicStroke(p1.boarder, 0, 
         2);
 
       this.g2d.setColor(p1.col);
       this.g2d.setStroke(this.size);
 
       if (p1.tool != p2.tool)
         continue;
       switch (p1.tool)
       {
       case 0:
         Line2D line1 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y);
         this.g2d.draw(line1);
         break;
       case 1:
         g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);
         this.g2d.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);
         break;
       case 3:
         Line2D line2 = null;
 
         int X = Math.abs(p2.x - p1.x);
         int Y = Math.abs(p2.y - p1.y);
 
         if (X >= Y)
         {
           line2 = new Line2D.Double(p1.x, p1.y, p2.x, p1.y);
         }
         else
         {
           line2 = new Line2D.Double(p1.x, p1.y, p1.x, p2.y);
         }
 
         this.g2d.draw(line2);
         break;
       case 4:
         Ellipse2D ellipse = new Ellipse2D.Double(p1.x, p1.y, 
           Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));
         this.g2d.draw(ellipse);
         break;
       case 5:
         Rectangle2D rect = new Rectangle2D.Double(p1.x, p1.y, 
           Math.abs(p2.x - p1.x), Math.abs(p2.y - p1.y));
         this.g2d.draw(rect);
         break;
       case 6:
         ++i;
       case 2:
       }
 
     }
 
     g.drawImage(this.bi, 0, 0, this);
   }
 
   public double radians(int degrees)
   {
     return (degrees * 3.141592653589793D / 180.0D);
   }
 
   class MyWindowAdapter extends WindowAdapter
   {
     DrawImage.fileDialog sf;
 
     public MyWindowAdapter(DrawImage.fileDialog paramfileDialog)
     {
       this.sf = paramfileDialog;
     }
 
     public void windowClosing(WindowEvent we)
     {
       this.sf.setVisible(false);
     }
   }
 
   class Point
     implements Serializable
   {
     int x;
     int y;
     Color col;
     int tool;
     int boarder;
 
     Point(int paramInt1, int paramInt2, Color paramColor, int paramInt3, int paramInt4)
     {
       this.x = paramInt1;
       this.y = paramInt2;
       this.col = paramColor;
       this.tool = paramInt3;
       this.boarder = paramInt4;
     }
   }
 
   class canvas extends Canvas
   {
     private static final long serialVersionUID = 1L;
     Image im = null;
     int X;
     int Y;
     int bufferX;
     int bufferY;
     int bufferWidth;
     int bufferHeight;
 
     public canvas(Image paramImage)
     {
       setCursor(new Cursor(13));
       this.im = paramImage;
 
       addMouseListener(new MouseAdapter()
       {
         public void mousePressed(MouseEvent e)
         {
           DrawImage.canvas.this.clickcanvas(e);
         }
 
         public void mouseReleased(MouseEvent e)
         {
           Canvas mcan = (Canvas)e.getSource();
 
           int mtop = mcan.getY(); int mleft = mcan.getX(); int mwidth = 
             mcan.getWidth(); int mheight = mcan.getHeight();
 
           DrawImage.canvas.this.X = (mleft + e.getX() - DrawImage.this.clickX);
           DrawImage.canvas.this.Y = (mtop + e.getY() - DrawImage.this.clickY);
 
           DrawImage.canvas.this.bufferX = DrawImage.canvas.this.X;
           DrawImage.canvas.this.bufferY = DrawImage.canvas.this.Y;
           DrawImage.canvas.this.bufferWidth = mwidth;
           DrawImage.canvas.this.bufferHeight = mheight;
 
           DrawImage.canvas.this.drawBufferImage();
         }
       });
       addKeyListener(new KeyAdapter()
       {
         public void keyPressed(KeyEvent e)
         {
           if (e.getKeyCode() == 127)
             DrawImage.canvas.this.removecanvas(e);
         }
       });
       addMouseMotionListener(new MouseMotionAdapter()
       {
         public void mouseDragged(MouseEvent e)
         {
           DrawImage.canvas.this.movecanvas(e);
         }
       });
     }
 
     public void movecanvas(MouseEvent e)
     {
       Canvas mcan = (Canvas)e.getSource();
 
       int mtop = mcan.getY(); int mleft = mcan.getX(); int mwidth = 
         mcan.getWidth(); int mheight = mcan.getHeight();
 
       clearImage();
 
       mcan.setBounds(mleft + e.getX() - DrawImage.this.clickX, mtop + e.getY() - DrawImage.this.clickY, 
         mwidth, mheight);
 
       for (int i = 0; i < DrawImage.this.v.size(); ++i)
       {
         Vector v1 = (Vector)DrawImage.this.v.elementAt(i);
         if (((Canvas[])v1.elementAt(0))[0].equals(mcan))
         {
           ((int[])v1.elementAt(1))[0] = mcan.getX();
           ((int[])v1.elementAt(1))[1] = mcan.getY();
           ((int[])v1.elementAt(1))[2] = mcan.getWidth();
           ((int[])v1.elementAt(1))[3] = mcan.getHeight();
         } else {
           if (!(((Canvas[])v1.elementAt(0))[1].equals(mcan)))
             continue;
           ((int[])v1.elementAt(1))[4] = mcan.getX();
           ((int[])v1.elementAt(1))[5] = mcan.getY();
           ((int[])v1.elementAt(1))[6] = mcan.getWidth();
           ((int[])v1.elementAt(1))[7] = mcan.getHeight();
         }
       }
 
       ((DrawImage)getParent()).repaint();
     }
 
     public void removecanvas(KeyEvent e)
     {
       try
       {
         Canvas mcan = (Canvas)e.getSource();
         ((DrawImage)getParent()).remove(DrawImage.this.curdelcan);
         for (int i = DrawImage.this.v.size() - 1; i >= 0; --i)
         {
           Vector v1 = (Vector)DrawImage.this.v.elementAt(i);
           if ((!(((Canvas[])v1.elementAt(0))[0].equals(mcan))) && 
             (!(((Canvas[])v1.elementAt(0))[1].equals(mcan)))) continue;
           DrawImage.this.v.removeElementAt(i);
         }
         ((DrawImage)getParent()).validate();
         ((DrawImage)getParent()).repaint();
       }
       catch (NullPointerException ex)
       {
         return;
       }
     }
 
     public void clickcanvas(MouseEvent e)
     {
       DrawImage.this.curdelcan = ((Canvas)e.getSource());
       DrawImage.this.clickX = e.getX();
       DrawImage.this.clickY = e.getY();
       ((DrawImage)getParent()).repaint();
 
       if (((DrawImage)getParent()).drawclear.equals(""))
         return;
       if ((((DrawImage)getParent()).startObj == null) && 
         (((DrawImage)getParent()).endObj == null)) {
         ((DrawImage)getParent()).startObj = ((Canvas)e.getSource()); } else {
         if ((((DrawImage)getParent()).startObj == null) || 
           (((DrawImage)getParent()).endObj != null) || 
           (((DrawImage)getParent()).startObj == (Canvas)
           e.getSource()))
           return;
         ((DrawImage)getParent()).endObj = ((Canvas)e.getSource());
         Vector v1 = new Vector();
         v1.addElement(new Canvas[] { DrawImage.this.startObj, DrawImage.this.endObj });
         v1.addElement(new int[] { DrawImage.this.startObj.getX(), DrawImage.this.startObj.getY(), 
           DrawImage.this.startObj.getWidth(), DrawImage.this.startObj.getHeight(), DrawImage.this.endObj.getX(), 
           DrawImage.this.endObj.getY(), DrawImage.this.endObj.getWidth(), 
           DrawImage.this.endObj.getHeight() });
         DrawImage.this.v.addElement(v1);
         ((DrawImage)getParent()).drawclear = "";
 
         ((DrawImage)getParent()).startObj = null;
         ((DrawImage)getParent()).endObj = null;
       }
     }
 
     public void paint(Graphics g)
     {
       g.drawImage(this.im, 0, 0, this);
     }
 
     public void drawBufferImage()
     {
       Graphics2D g2 = (Graphics2D)DrawImage.this.bi.getGraphics();
 
       g2.drawImage(this.im, this.X, this.Y, this);
       g2.dispose();
     }
 
     public void clearImage()
     {
       Graphics2D g2 = (Graphics2D)DrawImage.this.bi.getGraphics();
 
       g2.clearRect(this.bufferX, this.bufferY, this.bufferWidth, this.bufferHeight);
     }
   }
 
   class fileDialog extends Frame
   {
     private static final long serialVersionUID = 1L;
 
     fileDialog(String title)
     {
       super(title);
       DrawImage.MyWindowAdapter adapter = new DrawImage.MyWindowAdapter(this);
       addWindowListener(adapter);
     }
   }
 
   class myCanvas extends Canvas
   {
     private static final long serialVersionUID = 1L;
     Image im = null;
     String str = "";
 
     public myCanvas(String paramString)
     {
       this.str = paramString;
     }
 
     public myCanvas(Image paramImage)
     {
       setCursor(new Cursor(12));
       this.im = paramImage;
       addMouseListener(new MouseAdapter()
       {
         public void mousePressed(MouseEvent e)
         {
           DrawImage.myCanvas.this.clickmyCanvas(e);
         }
       });
     }
 
     public void clickmyCanvas(MouseEvent e)
     {
       ((DrawImage)getParent().getParent()).drawclear = "";
       ((DrawImage)getParent().getParent()).startObj = null;
       ((DrawImage)getParent().getParent()).endObj = null;
 
       DrawImage.this.curcan = ((Canvas)e.getSource());
       DrawImage.this.curimg = this.im;
     }
 
     public void paint(Graphics g)
     {
       if (this.str.equals(""))
       {
         g.drawImage(this.im, 0, 0, this);
       }
       else
       {
         g.drawString(this.str, 20, getHeight() / 2);
       }
     }
   }
 }