其实问题很简单,只是写代码太累了,给你点思路吧1.定义一个三角形类
class Triangle
{
   Point p1,p2,p3;  //三个顶点
   ......
   public void draw(Graphics g)
   {
     //划三条线连接成三角形
   }
   public boolean inPoint1(Point p)  //判断参数p是否在顶点1的小圆里
   {
     ......
   }
   public boolean inPoint2(Point p)  //判断参数p是否在顶点2的小圆里
   {
     ......
   }
   public boolean inPoint3(Point p)  //判断参数p是否在顶点3的小圆里
   {
     ......
   }
}2.定义一个JFrame上面放一个Panel用来画三角形,同时监听鼠标事件
class AFrame extends JFrame implements MouseListener ,MouseMotionListener
{
   //具体实现省略了,只给出监听思路
   public void mouseClicked(MouseEvent e)
   {
     if(tr.inPoint1(e.getPoint))
     {
        //鼠标点在第1个顶点,做个标记是1
     }
     if(tr.inPoint2(e.getPoint))
     {
        //鼠标点在第2个顶点,做个标记是2
     }
     if(tr.inPoint3(e.getPoint))
     {
        //鼠标点在第3个顶点,做个标记是3
     }
   }
   //鼠标移动事件监听
  public void mouseDragged(MouseEvent e)
  {
    if(标记是1)
    { tr.p1 = e.getPoint();
      tr.draw(g1);  //g1是Panel的Graphics
    }
    if(标记是2)
    { tr.p2 = e.getPoint();
      tr.draw(g1);  //g1是Panel的Graphics
    }
    if(标记是3)
    { tr.p3 = e.getPoint();
      tr.draw(g1);  //g1是Panel的Graphics
    }
  }
}大概思路是这样了,你在研究一下吧!

解决方案 »

  1.   

    给你设计个框架,你自己写
    public interface Figure{
    public void draw(Graphics g);
    public List getHandlers(); //取得图的handler
    public boolean isInside(int x,int y);//判断一个点是否在内部
    }
    public interface Handler{
    public void draw(Graphics g);
    public Figure getOwner(); //取得Handler的拥有者
    public boolean isInside(int x,int y); //判断一个点是否在Handler内部
    }
    public interface Tool{
    public void mouseDown(MouseEvent e, int x, int y);
    public void mouseDrag(MouseEvent e, int x, int y);
    public void mouseUp(MouseEvent e, int x, int y);
    public void mouseMove(MouseEvent evt, int x, int y);
    }
    public class Drawing extends JPanel implements MouseListener,ActionListener{
    private List figList;
    private Figure selectedFigure;
    private Tool selectedTool;
    public Drawing(){
    ...
    addMouseListener()
    ...
    }
    根据selectedTool和selectedFigure决定鼠标事件的结果
    }
    需要实现一个TriangleFigure
    两个Tool: SelectionTool和TriangleTool
    这两个tool跟两个button相关联,并且两个button是互斥的,只能选一个