下面是一个画线程序,实现功能,运行后在窗体上画几条线,最小化后还原时,能把最后一条线重绘到窗体上。望高手指点,谢谢!
import java.awt.*;
import java.awt.event.*;
public class DrawLine2
{
int orgX;
int orgY;
int endX;
int endY;
public void paint(Graphics g)
{
g.drawLine(orgX,orgY,endX,endY);
}

Frame f=new Frame();
public static void main(String[] args)
{
new DrawLine2().init();
} public void init()
{
f.setSize(300,300);
f.setVisible(true);
    f.addMouseListener(new MouseAdapter()
    {
    
     public void mousePressed(MouseEvent e)
     {
     orgX=e.getX();
     orgY=e.getY();
     }
     public void mouseReleased(MouseEvent e)
     {
     endX=e.getX();
     endY=e.getY();
     Graphics g=f.getGraphics();
     g.setColor(Color.RED);
     g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30));
     g.drawString(new String(orgX+","+orgY),orgX,orgY);
     g.drawString(new String(endX+","+endY),endX,endY);
     g.drawLine(orgX,orgY,endX,endY);
     }
    }
     );
}
}

解决方案 »

  1.   

    重写JFrame的paint(Graphics g)方法:Frame f=new Frame(){ @Override
    public void paint(Graphics g) {
    super.paint(g);
        g.setColor(Color.RED); 
        g.setFont(new Font("隶书",Font.ITALIC|Font.BOLD,30)); 
        g.drawString(new String(orgX+","+orgY),orgX,orgY); 
        g.drawString(new String(endX+","+endY),endX,endY); 
        g.drawLine(orgX,orgY,endX,endY); 
    }
    };