自己做组件。
先参考有关java的图形设计,然后学习java组件的定制。
最后你就可以解决这个问题了。

解决方案 »

  1.   

    MouseDown>>a=1;A=getEventSource();
    MouseUp>>a=0;B=getEventSource();if((!A.equals(B))&(A.a!=B.a){g.drawLine(A.pos,B.pos);}
      

  2.   

    不管是用组件还是直接在背景上画,都是要继承一个容器类(或其它类)来实现.
    用组件大概可以有这样一些方法:
    1.设置组件中映射关系的个数.
    2.画一条从左边第n个到右边第m个的射线.
    起始坐标和结束坐标可以通过组件的大小和最大映射关系的个数计算得出.
    3.删除所有对应关系.
    这个应该注意组件中应该保存有所有映射关系,清空,简单用底色重绘面板就可以了
    4.删除一条已有的从左边第n个到右边第m个的射线.
    删除相应的映射关系,调用3,然后重绘所有射线.
    如果直接画,
    在PaintComponent(Graphics g)方法中先调用一个
    super.PaintComponent(Graphics g),然后再画射线就不会有问题了
      

  3.   

    在鼠标拖动时,可以得到是拖动了JList的哪一项,
    难点是拖动到另一个JList中怎么得到是哪一项,这个还没想好,hehe,不过我想应该可以从鼠标坐标来着手.另外,还可以在鼠标拖动事件中
    用setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR))来显示效果
    ^_^