一个程序 要求功能是在面板上绘制矩形,鼠标第一下点击记录矩形的左上角,鼠标第二下点击记录矩形右下角,绘制出矩形
我写的程序没有语句错误,但执行结果却和初衷相差十万八千里 -_-!
麻烦大家帮我看看
对于向点击鼠标事件,如果是相同的处理结果比较好办,比如点击一下出现一个点,但是如果前后两次甚至三次、四次点击不一样,那样该怎么处理?
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.awt.geom.*;
import javax.swing.*;public class toDrawRecent
{ public static void main(String[] args)
  { AFrame frame=new AFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.show();
   }
 }class AFrame extends JFrame
{ public AFrame()
  { 
    setTitle("toDrawDectangle");
    setSize(framewidth,frameheight);
    AnPanel panel=new AnPanel();
    Container contentPane=getContentPane();
    contentPane.add(panel);
   }
 public static final int framewidth=300;
 public static final int frameheight=200;
}class AnPanel extends JPanel

   public AnPanel()
   { 
     squarse=new ArrayList();
     FirstPointArrayList=new ArrayList();
     current=null;
     addMouseListener(new MouseHandler());
     addMouseMotionListener(new MouseMotionHandler());
    }
   public void paintComponent(Graphics g)
   { 
     super.paintComponent(g);
     Graphics2D g2=(Graphics2D)g;
     for(int i=0;i<squarse.size();i++)
     g2.draw((Rectangle2D)squarse.get(i));
    }
   public Point2D FirstPoint(Point2D p)
   {
     return p;
    }
   public Point2D SecondPoint(Point2D p)
   { 
     return p;
    }
   public void find(Point2D p)
   {
    if(p==(Point2D)FirstPointArrayList.get(times-2))
     {
      FirstPointArrayList.remove(times-1);
      times--;
      FirstPointFind();
      }
    else
      {
       add((Point2D)FirstPointArrayList.get(times-2),(Point2D)FirstPointArrayList.get(times-1));
       }
    }
   public Point2D FirstPointFind()
   {
    return null;
    }
   public void add(Point2D p1,Point2D p2)  
   {
    double firstPointX=p1.getX();
    double firstPointY=p1.getY();
    double secondPointX=p2.getX();
    double secondPointY=p2.getY();
    double width=0;
    double height=0;
    double X=0;
    double Y=0;
    if(secondPointX > firstPointX)
       {
         width=secondPointX - firstPointX;
             X=firstPointX;
        }
    else
       {
         width=firstPointX - secondPointX;
             X=secondPointX;
        }
    if(secondPointY > firstPointY)
       {
         width=secondPointY - firstPointY;
             Y=firstPointY;
        }
    else
       {
         width=firstPointY - secondPointY;
             Y=secondPointY;
        }
    current=new Rectangle2D.Double(X,Y,width,height);
    squarse.add(current);
    repaint();
   }
  private ArrayList squarse;
  private ArrayList FirstPointArrayList;
  private Rectangle2D current;
  private static int times=0;
  private class MouseHandler extends MouseAdapter
  {
    public void mouseClicked(MouseEvent event)
      {
        Point  FirstPoint=event.getPoint();
        FirstPointArrayList.add(FirstPoint);
        times++;
        if(times==1)
          FirstPointFind();
        else 
          find(FirstPoint);
       }
     }
 
  private class MouseMotionHandler implements MouseMotionListener
  {
    public void mouseMoved(MouseEvent event)
      {
        setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
       }
    public void mouseDragged(MouseEvent event)
      {
       }
   } 
}