用双缓冲来实现,就是定义一个Image
Image img=createImage(int width,int height);
然后在这个img上画图
Graphics imgg=img.getGraphics();
imgg.drawImage(……);
…………
最后把在缓冲区已经画好的图在applet上画出来
public void paint(Graphics g) {
g.drawImage(img,0,0,this);
}

解决方案 »

  1.   

    我是直接用
    img=this.getImage(getDocumentBase(),“p1.jpg”);
    g.drawImage(img,x,y,this);
    通过在线程RUN()中改变x的坐标来实现图片的滑动,
    现在有一p2.gif想把它加载到applet底端,并且响应鼠标点击,来控制p1的滑动。但是,p1滑动时,p2有闪烁。也许方法不对,请指教,楼上讲的试了似乎不太行
      

  2.   

    不可能不行的,你看看俺做的一个效果,是否有闪的现象
    这个的图片的移动更新量可不小,我用这个方法都没有发现闪,你看看
    http://xiruo.cn.st
      

  3.   

    把你的改改,如下:
    img=this.getImage(getDocumentBase(),“p1.jpg”);
    Image im=createImage(img.getWidth(this),img.getHeight(this));
    Graphics gg=im.getGraphics();
    gg.drawImage(img,0,0,this);
    g.drawImage(im,x,y,this);
      

  4.   

    Graphics gg=im.getGraphics();
    gg.drawImage(img,0,0,this);
    g.drawImage(im,x,y,this);
    放在哪里,paint()中还是init()中?
    不管怎样,谢谢xiruo,散分。
      

  5.   

    谢谢兄弟你的回复,但是还是不行。我把代码给你,你帮我看看。我是在jbuilder 6下。
    package tony;import java.awt.*;
    import java.awt.event.*;
    import java.applet.*;public class h extends Applet implements Runnable{
      boolean isStandalone = false;
      int x=0;
      int y=0;
      Image img1;
      Image img2;
      Image img3;
      Image test;
      boolean flag=true;
      Thread scroller=null;  //Get a parameter value
      public String getParameter(String key, String def) {
        return isStandalone ? System.getProperty(key, def) :
          (getParameter(key) != null ? getParameter(key) : def);
      }  //Construct the applet
      public h() {
      }
      //Initialize the applet
      public void init() {
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      //Component initialization
      private void jbInit() throws Exception {
      img1=getImage(getDocumentBase(),"p1.jpg");
      img3=getImage(getDocumentBase(),"1.gif");  }
      public void start(){
     if(scroller==null){
      scroller=new Thread(this);
       scroller.start();
      }
    }
    public void run(){
    while(true){
    repaint();
    x--;
     try{
    Thread.sleep(20);
            }
        catch(InterruptedException ex)
           {}
           }
    }
    public void stop(){
    if(scroller!=null){
    scroller.stop();
    scroller=null;
    }
    }
    public void update(Graphics g)
    {
    g.drawImage(img1,x,0,this);
      }
    public void paint(Graphics g){
    update(g);
    }
    public String getAppletInfo() {
        return "Applet Information";
      }
    public String[][] getParameterInfo() {
        return null;
      }
    }
    p1是一张移动的大图,g1是一个小的向后指向的图标,我想把g1加上p1上去,响应鼠标的点击来实现控制p1的左移。如果需要图,我可以发给你。