把你传进来的坐标和原有的坐标进行比对,因为x1,y1和x2和y2同时只有一处会发生变动。不变的一端即为没有拖动的一端,则另一端即为拖动的一端

解决方案 »

  1.   

    我觉得只有两个参数不可能实现。如果last本身有原始点的信息那就还可以判断。看看你的监听事件里面有没有可能拿到操作点的句柄吧
      

  2.   

    假如: line(x1,y1,x2,y2)
    传进来的只是一个鼠标点,怎么对比?
      

  3.   

    现在就是只传进来一个last点(鼠标的位置),
    矩形,圆等都实现了,就是线段有问题!就是你拖动的时候
    不知道是
    line.x2 = last.x;
    line.y2 = last.y;
    还是
    line.x1 = last.x;
    line.y1 = last.y;
      

  4.   

    简单的处理方式:
    按你的说明,我的理解是,你要使用鼠标拖动端点来进行resize操作,
    当进行resize时,开始时是一定要确定到底是哪个端点要进行拖动的,比如,用户可以通过如下方式来拖动:(1)点击要拖动的端点(2)按住鼠标并移动到想要的目的地(3)释放鼠标完成拖动。
    如果这样的话,可以给端点引入状态,简单的就是静止和拖动两种,
    当拖动完成后,根据端点的状态来决定当前鼠标坐标应该是哪个端点的。或者还有这种方式,当确定了哪个端点要进行拖动时,将该端点注册到拖动事件的
    控制器,当完成拖动后,由拖动控制器将鼠标坐标赋值给注册的端点。方法估计还有不少的,不过我觉得中心思想就是在用户确定要改变哪个端点的位置时
    你要记录下来(不管是改变端点状态,还是象一个控制器注册该端点),在完成拖动
    以后,根据鼠标当前坐标和前面记录的端点来执行相应的操作。
      

  5.   

    现在就是再函数中只传入鼠标的点(last)
    然后在函数中进行resize动作现在没办法知道到底拖动的是那个点?
      

  6.   

    liushenling(六神) :
    现在关键就是不是很想搞这个标准点,因为这样的化,影响了整体的安排!
    有没有别的办法!
      

  7.   

    to 楼主,给你打个比方:
    有两个人站在操场上,老师让他们先选好位置,
    比如A站在(1,1),B站在(2,2)
    然后,老师说:请走到(3,3)位置,你说这个时候是A走过去还是B走过去?还是两个人都走过去?说这个很明白了,你这样的要求显然不能实现,
    你应该重新考虑自己的设计。
      

  8.   

    线段和圆(矩形)是有区别的,好像还真没有别的办法! swinging(山不在高) 的比喻真得很贴切!
      

  9.   

    在起始点绘个小圆,终点也绘个小圆,从JComponent继承,保存的是起点位置与终点位置,用这两个组件响应鼠标事件,就可以重绘线段,当然这样是有代价的,多了两个对象