最好将各种形状定义为对象。例如,定义一个圆的类。包括原点(x,y),和半径(r).
由这些可将它画在Panel上。再为该Panel加上鼠标监听事件。在MousePress时就会产生一个事件e。用e.getx()和e.gety()就可得到鼠标点下去的位置。判断一下该点到原点的距离是否小于r。如是,证明你选中了该圆。而接着MouseDrag时也会产生事件e。你同样可得到一个点e.getX(),e.getY().这时你将圆的对象中的原点的值换成这个点的值。在把圆重画一遍就可以了。

解决方案 »

  1.   

    定义一个区域对象,该对象为动态可变的(根据鼠标选定的范围),
    将其copy 到剪贴板或者什么Picture 类型的对象上,然后粘贴到 你需要的位置,
    应该是最省事和有效的。
    但愿能给你一点帮助!!
      

  2.   

    将各种形状定义为对象 然后让对象自身implements MouseListener,MouseMotionListener
      

  3.   

    judgement_sword(没什么):
    你好,
    谢谢你的提示,我也想过你说的方法,但是有一个问题,如果我在一个图形里面,比如说在圆里面还有一个小的圆,如果按照那个方法的话,我就不能move单个圆了,如果move的话就只能2个圆一起move. 不知道我认为的问题是不是问题 ?还有,我怎么给分阿 :)
      

  4.   

    我自己写了一个例子, 我可以寄email 给你作交流
    我是从香港来的, 请多指教
    不过, 我不太看得憧你们的语法, 但是我会尽量去学的, 谢谢 !!
    Please leave me your email address
      

  5.   

    Circle a;
    Circle b;
    Vector cricles;
    circles.add(a);
    cricles.add(b);for(Enumeration enum = circles.elements;enum.hasMoreElements;){
      Circle c =(Circle)enum.nextElement;
      //做一下c时候被选中的判断;
      if(选中){  
       return c;
      }
    }
    //这样的话,找到第一个圆就返回了。所以不用担心再去找所有的圆。
      

  6.   

     hello daniel1028(Daniel Wong):
    so, here is my email address, and thank you in [email protected]
      

  7.   

    hello daniel1028(Daniel Wong):
    so, here is my email address, and thank you in advance
    [email protected]