public void add(int dx,int dy) 

Point2D end=new Point2D.Double(last.getX()+dx,last.getY()+dy); 
Line2D line=new Line2D.Double(last,end); 
lines.add(line); 
repaint(); 
last=end; 
} 这个程序是在你按方向键的时候画直线一直到你松开按键,里面有一个repaint()方法,我不清楚他准确的工作方式,在他前面画了一条直线,调用repaint()方法是不是就是总是复制这条线啊!就是重新画一条这样的线啊
是不是说把方法都消除了然后重新执行这个方法呀.就是说执行到repaint()方法的时候就停止了然后又重新回到Point2D end.....那儿了?
能不能给个详细的说明啊!

解决方案 »

  1.   

    相当于刷新 没细考虑过这个问题 调用repaint()可能会触发那个paintComponent()方法吧 你的画线的代码是在paintComponent方法里吧 呵呵 那段代码我还有点印象 你按键的时候会调用add方法 在lines里面添加一个线段 但是只添加到lines里面是没用的啊 它只是把数据存放那个list里面 你要用绘图命令去绘制才行 图形的数据从lines里面取 好像那个代码每次都是把lines里面的所有数据从头到尾重绘一遍 不是接着原来的点继续画 感觉不爽所以没细看
      

  2.   

    repaint就是刷新的作用,他调用了update方法先刷新,然后调用程序的paint方法重画,以上两个方法只能由repaint调用,不能直接使用