在做一个小东西,在两个组件中有多条直线连接,
我是直接在一个Jpanel中调用paint()方法实现的
例如:
public void paint(Graphics g) {
                …………省略
                g.drawLine(x1,y1,x1+15,y1);
                g.drawLine(x1+15,y1,x2-20,y2);
                g.drawLine(x2-20,y2,x2,y2);
            }但是这样做,直线是画出来了,但是画出来的直线却是不能够被鼠标选中,不能够监听鼠标事件的,
因为Paint()方法画出来的直线不是一个组件,
要怎么解决这个问题呢???
急啊,搞了2天了,就卡在这儿了。   

解决方案 »

  1.   

    1.定义一个Line类,保存所画的直线(X1,Y1,X2,Y2),把所有画的线都表示成Line对象,动态地放在
      Vector  或链表中;
    2.把JPanel注册为MouseListener;
    3.在鼠标事件处理程序中,遍历Line对象集合,看是否在哪个Line上,再做相应的处理.大概是这样,先试一试.
    可能还有其他的办法.
      

  2.   

    3.在鼠标事件处理程序中,遍历Line对象集合,看是否在哪个Line上,再做相应的处理.如果是点击的话,应该是line与鼠标的距离小于某个数。
      

  3.   

    因为Paint()方法画出来的直线不是一个组件
    这话有意思。
      

  4.   

    因为Paint()方法画出来的直线不是一个组件
    这话有意思。没有办法,新人,不知道如何才能够说得符合规范,符合标准
      

  5.   

    Java中所有数字都不是对象,
    如果一定要你把数字传到服务器端,
    是不是就没有办法了呢???
    不是对象,你可以构造对象呀。
    这里面求距离的函数,你可能得认真想想。
      

  6.   

    实现java.awt.Shape的类有方法:boolean contains(double x, double y) ,功能很强大,可以使用它来完成检测任务。