为了防止以前画的被清空
public void update(Graphics g)
{
   paint(g);
}

解决方案 »

  1.   

    public void update(Graphics g)
    {
       paint(g);
    }
    应该可以解决你的4 个问题.你该好好看看java 2 图形设计 卷1 AWT,
    就在开头部分
      

  2.   

    原代码帮你写了,够意思了吧
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    public class DrawLinePanel
    {
    public static void main(String[] args)
    {
    JFrame frame=new JFrame("--DrawLinePanel--");
    Container con=frame.getContentPane();
    MyPanel mp=new MyPanel();
    MyMouseListener listener1=new MyMouseListener(mp);
    MyMouseListener2 listener2=new MyMouseListener2(mp);
    mp.addMouseListener(listener1);
    mp.addMouseMotionListener(listener2);
    con.add(mp,BorderLayout.CENTER);
    frame.setBounds(30,30,300,300);
    frame.show();
    }
    }
    class MyPanel extends JPanel
    {
    Vector v=new Vector();
    MyPoint point=new MyPoint();
    boolean flag=false;
    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);
    Enumeration enum=v.elements();
    while(enum.hasMoreElements())
    {
    Object obj=enum.nextElement();
    MyPoint p=(MyPoint)obj;
    g.drawLine(p.sX,p.sY,p.eX,p.eY);
    }
    if(flag)
    {
    g.drawLine(point.sX,point.sY,point.eX,point.eY);
    }
    }
    }
    class MyMouseListener extends MouseAdapter
    {
        MyPanel dlp;
        public MyMouseListener(MyPanel d)
        {
    this.dlp=d;
        }
        public void mousePressed(MouseEvent e)
        {
    dlp.point.sX=e.getX();
    dlp.point.sY=e.getY();
        }
        public void mouseReleased(MouseEvent e)
        {
    if(dlp.flag)
    {
    dlp.v.add(new MyPoint(dlp.point.sX,dlp.point.sY,e.getX(),e.getY()));
    dlp.flag=false;
    dlp.point.reset();
    dlp.repaint();
    }
        }
    }
    class MyMouseListener2 extends MouseMotionAdapter
    {
    MyPanel dlp=null;
    public MyMouseListener2(MyPanel d)
    {
    this.dlp=d;
    }
    public void mouseDragged(MouseEvent e)
    {
    dlp.flag=true;
    dlp.point.eX=e.getX();
    dlp.point.eY=e.getY();
    dlp.repaint();
    }
    }
    class MyPoint
    {
    int sX=0;
    int sY=0;
    int eX=0;
    int eY=0;
    public MyPoint()
    {
    }
    public MyPoint(int x,int y,int m,int n)
    {
    sX=x;sY=y;eX=m;eY=n;
    }
    void reset()
    {
    sX=0;
    sY=0;
    eX=0;
    eY=0;
    }
    }
      

  3.   

    to  ghostalker 
    既然是作业,你自己把代码多琢磨一下啊,我可不想害你啊。