1:往上流传的是双缓冲区的解法,但是这样会对内存照成浪费,并且如果在分布式应用中采用此方法,后果是很严重的
2:究其原因,是我们在repaint触发时,没有将当前绘制的图形进行显示
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.awt.geom.Line2D;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JPanel;
class LinePanel extends JPanel{
private static final long serialVersionUID = 1L;
private Vector<Line2D> lines = new Vector<Line2D> ();//存储画板上所有的直线
private Line2D line = new Line2D.Double() ;
private Line2D cur = new Line2D.Double() ;//起点到当前光标的直线,临时的
public LinePanel(){
super();
this.setBackground(new Color(255,255,255));