在做一个小东西,在两个组件中有多条直线连接,
我是直接在一个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.   

    一、你写个继承JPanel的类,
    二、public void paint(Graphics g) {
                    …………省略
                    g.drawLine(x1,y1,xx1,yy1);
                    g.drawLine(x2,y2,xx2,yy2);
                    g.drawLine(x3,y3,xx2,yy3);
                   
                    //g.drawLine(x1,y1,x1+15,y1);
                    //g.drawLine(x1+15,y1,x2-20,y2);
                    //g.drawLine(x2-20,y2,x2,y2);
                }
    三、把那些线段的端点信息存储在JPanel字段中。如x1,y1, xx1, yy1, x2, y2, xx2, yy2等
    四、监听JPanel子类的鼠标事件。
    在鼠标监听事件中,如果鼠标位置于线路的距离小于某个数,就表示选中线段。