我在作画线的时候,每次最小化后,重画的线与原来的位置都不同了,请大家帮忙改一下,怎样才能与原来的位置一样呀?
程序如下:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;class MyLine
{
private int x1,x2,y1,y2;
public MyLine(int x1,int x2,int y1,int y2)
{
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
}
public void drawMe(Graphics g)
{
g.drawLine(x1,y1,x2,y2);
g.drawString("起始坐标:"+new String(x1+","+y1),x1,y1);
}
}public class DrawLine extends Frame
{
Vector v=new Vector();
public static void main(String[]args)
{
DrawLine dl=new DrawLine();
dl.init();
}
public void paint(Graphics g)
{


g.setColor(Color.BLUE);
Enumeration en=v.elements();
while(en.hasMoreElements())
{
MyLine m=(MyLine)en.nextElement();
m.drawMe(g);
}

}
public void init()
{
setSize(300,300);
setVisible(true);
addMouseListener(new MouseAdapter()
{

int x1,x2,y1,y2;
public void mousePressed(MouseEvent e)
{
  x1=e.getX();
  y1=e.getY();
  
}
public void mouseReleased(MouseEvent e)
{
x2=e.getX();
y2=e.getY();

Graphics g=e.getComponent().getGraphics();
g.setColor(Color.BLUE);
g.drawLine(x1,y1,x2,y2);
g.drawString(new String("起始点坐标:"+x1+","+y1),x1,y1);
v.add(new MyLine(x1,y1,x2,y2));
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
((Window)e.getSource()).dispose();
System.exit(0);
}}
);
}
}

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;class MyLine
    {
    private int x1,x2,y1,y2;
    public MyLine(int x1,int x2,int y1,int y2)
    {
    this.x1=x1;
    this.x2=x2;
    this.y1=y1;
    this.y2=y2;
    }
    public void drawMe(Graphics g)
    {
    g.drawLine(x1,y1,x2,y2);
    g.drawString("起始坐标:"+new String(x1+","+y1),x1,y1);
    }
    }public class DrawLine extends Frame
    {
    Vector v=new Vector();
    public static void main(String[]args)
    {
    DrawLine dl=new DrawLine();
    dl.init();
    }
    public void paint(Graphics g)
    {
    g.setColor(Color.BLUE);
    Enumeration en=v.elements();
    while(en.hasMoreElements())
    {
    MyLine m=(MyLine)en.nextElement();
    m.drawMe(g);
    }}
    public void init()
    {
    setSize(300,300);
    setVisible(true);
    addMouseListener(new MouseAdapter()
    {int x1,x2,y1,y2;
    public void mousePressed(MouseEvent e)
    {
    x1=e.getX();
    y1=e.getY();}
    public void mouseReleased(MouseEvent e)
    {
    x2=e.getX();
    y2=e.getY();Graphics g=e.getComponent().getGraphics();
    g.setColor(Color.BLUE);
    g.drawLine(x1,y1,x2,y2);
    g.drawString(new String("起始点坐标:"+x1+","+y1),x1,y1);
    v.add(new MyLine(x1,x2,y1,y2));  // here pay attention
    }
    });
    addWindowListener(new WindowAdapter()
    {
    public void windowClosing(WindowEvent e)
    {
    ((Window)e.getSource()).dispose();
    System.exit(0);
    }}
    );
    }
    }
      

  2.   

    为什么不是把point加到Vector里面,在paint(Gragpic g)里面通过V 画呢?
    用lineto()