import java.awt.*;
import java.applet.*;
import java.awt.event.*;public class Lines extends Applet {
int px,py,px1,py1; public Lines(){
 addMouseListener(new MouseAdapter(){
   public void mouseReleased(MouseEvent e){
   drawline(e.getX(),e.getY());
   }
 }); } public void paint(Graphics g){
g.drawString("whyin ok!",20,20);
g.drawLine(40,40,100,40);
System.out.println("ok");
} public void drawline(int x,int y){
Graphics g = getGraphics();
g.drawLine(x,y,x+100,y);
}
}一最小化,线就没了,我怎么样让已经存在的线,最小化时后,还存在呀!

解决方案 »

  1.   

    当窗口大小被改变之后(例如最小化)
    系统就会自动调用repaint()方法来重绘Applet界面
    缺省状态下repaint()方法是清空当前区域之后再调用paint()方法
    如果想那些线还存在
    就需要重新定义repaint()方法
      

  2.   

    illia(蓝雪) 
    分析的很好
      

  3.   

    一般不重载repaint()而重载update()方法。
    系统就会自动调用repaint()方法来重绘Applet界面,
    repaint()方法会调用update()方法,
    然后repaint()方法会调用paint()方法。
    所以你不必重载repaint()也不必重载update()方法,
    只要记住鼠标点击过的点(比如保存在一个Vector中),
    然后在paint()方法中画出点击过的线即可。
    呵呵~~
      

  4.   

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;public class Lines extends Applet {
    int px,py,px1,py1; public Lines(){
     addMouseListener(new MouseAdapter(){
       public void mouseReleased(MouseEvent e){
      // drawline(e.getX(),e.getY());
      px = e.getX();
      py = e.getY();
      drawline();
       }
     });
    }
        public void drawline(){
    Graphics g = getGraphics();
    g.drawLine(px,py,px+100,py);
    }    public void update(Graphics g){
            System.out.println("update");
    }
    public void paint(Graphics g){
    //Graphics g = getGraphics();
    //g.drawLine(px,py,px+100,py);
    }
    }不能解决啊,各位测试一下,还是和以前一样啊!!谢谢各位了
      

  5.   

    这样应该可以了,Image大小设成和你的applet大小一样。如果applet大小是页面的百分比的形式,就把Image设大一点。
    就内存开销而言还是用xhh的方法保存点击过的点更好,如果你不是要画特别复杂的图案的话。import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;public class Lines extends Applet {
        int px,py,px1,py1;
    Image img;
    Graphics gra;    public Lines(){
             addMouseListener(new MouseAdapter(){
                   public void mouseReleased(MouseEvent e){
                      px = e.getX();
                      py = e.getY();
                      drawline();
                      repaint();
                   }
                 });
        }
        public void drawline(){
         gra.drawLine(px,py,px+100,py);
        }
    public void update(Graphics g) {
    paint(g);
    }
    public void paint(Graphics g) {
    if (img == null) {
    img = createImage(1024,768);
    gra = img.getGraphics();
    }
    g.drawImage(img, 0, 0, null);
    }
    }
      

  6.   

    import java.awt.*;
    import java.applet.*;
    import java.awt.event.*;
    import java.awt.image.*;public class Lines extends Applet {
    int px,py,px1,py1;
    BufferedImage bufImg = null; public void init()
    {
    bufImg = new BufferedImage((int)getSize().getWidth(),
    (int)getSize().getHeight(),BufferedImage.TYPE_INT_RGB);
    }
    public Lines(){
     addMouseListener(new MouseAdapter(){
       public void mouseReleased(MouseEvent e){
      px1 = e.getX();
      py1 = e.getY();
      drawline();
      repaint();
       }
       public void mousePressed(MouseEvent e){
          px = e.getX();
          py = e.getY();
       }
     });
    }
        public void drawline(){
    Graphics g = bufImg.createGraphics();
    g.setColor(Color.red);
    g.drawLine(px,py,px1,py1);
    } public void paint(Graphics g){
    g.drawImage(bufImg,0,0,Color.gray,this);
    }
    }