你的处理方式很独特呀。把东西都放在Vector里面。你不要保存那么多也许就没事了。及时的清空。

解决方案 »

  1.   

    1. 把第一个addMouseListener(...)去掉.2. 改下面的函数成:
      public void paint(Graphics g)
      {
         super.paint(g);
         if(vx2.size()==0)
            return;
         x1 = ((Integer)vx2.get(0)).intValue();
         y1 = ((Integer)vy2.get(0)).intValue();
         for(int i = 1;i<vx2.size();i++)
         {
           x2 = ((Integer)vx2.get(i)).intValue();
           y2 = ((Integer)vy2.get(i)).intValue();
           g.drawLine(x1,y1,x2,y2);
           x1=x2;y1=y2;
         }
      }
      

  2.   

    to  helpall
    照你的方法,线是可以画出来
    不过是连续 的线
    他要画几根直线
      

  3.   

    程序很乱,结构不清晰,此外Vector的使用也不妥当,我的感觉是你没有理解Vector.是不是老师布置的作业啊。我学Vc的时候做过类似的作业。
      

  4.   

    试试
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;public class Drawline extends JFrame {
      private Draw dr;  public Drawline()
      {
        dr = new Draw();
        dr.setBackground(Color.white);
        Container c = getContentPane();
        c.setLayout(new FlowLayout());
        c.add(dr);
        setSize(300,300);
        show();
      }  public static void main(String args[])
      {
        Drawline dl = new Drawline();
        dl.addWindowListener(
          new WindowAdapter(){
            public void windowClosing(WindowEvent e)
            {
              System.exit(0);
            }
           }
         );
      }
    }
      

  5.   

    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    import java.util.*;
    class Draw extends JPanel{
      private int x1,y1,x2,y2;
      final Vector vx1,vy1,vx2,vy2;
      public Draw()
      {
        vx1 = new Vector (1);
        vy1 = new Vector (1);
        vx2 = new Vector (1);
        vy2 = new Vector (1);
        addMouseListener(
            new MouseAdapter()
        {
          public void mousePressed(MouseEvent e)
          {        vector1(e.getX(),e.getY());
          }
          public void mouseReleased(MouseEvent e)
          {
            vector2(e.getX(),e.getY());
            repaint();
          }
        }
        );  }
      public void  vector1(int x,int y){
        vx1.add(Integer.valueOf(""+x)); vy1.add(Integer.valueOf(""+y));
      }
      public void  vector2(int x,int y){
        vx2.add(Integer.valueOf(""+x)); vy2.add(Integer.valueOf(""+y));
      }
      public void paint(Graphics g)
      {
        super.paint(g);
        if(vx2.size()==0)
          return;
        x1 = ((Integer)vx2.get(0)).intValue();
        y1 = ((Integer)vy2.get(0)).intValue();
        for(int i = 1;i<vx2.size();i=i+2)
        {
          x2 = ((Integer)vx2.get(i)).intValue();
          y2 = ((Integer)vy2.get(i)).intValue();
          g.drawLine(x1,y1,x2,y2);
          if(i != vx2.size()-1){
            x1 = ((Integer)vx2.get(i+1)).intValue();
            y1 = ((Integer)vy2.get(i+1)).intValue();
          }    }  }  public Dimension getPreferredSize()
      {
        return new Dimension(150,100);
      }}
      

  6.   

    //终结版
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;import javax.swing.*;public class DrawLine extends JFrame {
      private Draw dr;
      public DrawLine()
      {
        dr = new Draw();
        dr.setBackground(Color.white);
        Container c = getContentPane();
        c.setLayout(new FlowLayout());
        c.add(dr);
        setSize(300,300);
        show();
      }  public static void main(String args[])
      {
        DrawLine dl = new DrawLine();
        dl.addWindowListener( new WindowAdapter(){
            public void windowClosing(WindowEvent e){
               System.exit(0);
            }
           });
      }
    }class Line {
       public int x0,y0,x1,y1;
    }class Draw extends JPanel{
       Vector lines = new Vector();
       Line cur;   public Draw()
       {
          setPreferredSize(new Dimension(150,100));
          addMouseListener( new MouseAdapter() {
             public void mousePressed(MouseEvent e) {
                if(cur == null)
                   cur = new Line();
                cur.x0 = e.getX();
                cur.y0 = e.getY();
             }
             public void mouseReleased(MouseEvent e) {
                cur.x1 = e.getX();
                cur.y1 = e.getY();
                lines.add(cur);
                cur = null;
             }
          });      addMouseMotionListener( new MouseMotionAdapter(){
             public void mouseDragged(MouseEvent e){
                cur.x1 = e.getX();
                cur.y1 = e.getY();
                repaint();
              }
          });
      }  public void paint(Graphics g) {
         super.paint(g);     for(int i = 0;i<lines.size();i++){
            Line tmp = (Line)lines.elementAt(i);
            g.drawLine(tmp.x0, tmp.y0, tmp.x1, tmp.y1);
         }
         if(cur != null )
            g.drawLine(cur.x0,cur.y0,cur.x1,cur.y1);
      }}