呵呵,你多写了几个字符:
Image img=getImage(getCodeBase(),"pure.gif");
我想应该是 img=getImage(getCodeBase(),"pure.gif");
吧。
错误的意思是img如果在内嵌类里使用,必须定义为final。也就是说应该类里,而不是函数init里。

解决方案 »

  1.   

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    public class TranslateTest extends Applet
    {
        static Image img;
        private Point pressed=new Point(),lastTranslate=new Point();    public void init()
        {
    Image img=getImage(getCodeBase(),"pure.gif");
            try
            {
                MediaTracker mt=new MediaTracker(this);
                mt.addImage(img,0);            mt.waitForID(0);
            }
            catch(InterruptedException e)
            {
                e.printStackTrace();
            }
            addMouseListener(new MouseAdapter()
            {
                public void mousePressed(MouseEvent e)
                {
                    Point ioc=e.getPoint();
                    pressed.x=ioc.x-lastTranslate.x;
                    pressed.y=ioc.y-lastTranslate.y;
                }
            });
            addMouseMotionListener(new MouseMotionAdapter()
            {
                public void mouseDragged(MouseEvent e)
                {
                    Point ioc=e.getPoint();
                    Point translate=new Point(ioc.x-pressed.x,ioc.y-pressed.y);
                    Graphics g=getGraphics();
                    try
                    {
                        g.clearRect(0,0,getSize().width,getSize().height);
                        g.translate(translate.x,translate.y);
                        showStatus("Translate Graphics:"+translate);
                        g.drawImage(TranslateTest.this.img,0,0,TranslateTest.this);
                    }
                    finally
                    {
                        g.dispose();
                    }
                    lastTranslate=translate;
                }
            });
        }
        public void paint(Graphics g)
        {
    if(img==null)
    img = getImage(getCodeBase(),"pure.gif");
            g.drawImage(img,0,0,this);
        }
    }
      

  2.   

    编译通过import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;public class TranslateTest extends Applet
    {
        Image img;
        private Point pressed=new Point(),lastTranslate=new Point();    public void init()
        {
            img=getImage(getCodeBase(),"pure.gif");
            try
            {
                MediaTracker mt=new MediaTracker(this);
                mt.addImage(img,0);
                mt.waitForID(0);
            }
            catch(InterruptedException e)
            {
                e.printStackTrace();
            }
            addMouseListener(new MouseAdapter()
            {
                public void mousePressed(MouseEvent e)
                {
                    Point ioc=e.getPoint();
                    pressed.x=ioc.x-lastTranslate.x;
                    pressed.y=ioc.y-lastTranslate.y;
                }
            });
            addMouseMotionListener(new MouseMotionAdapter()
            {
                public void mouseDragged(MouseEvent e)
                {
                    Point ioc=e.getPoint();
                    Point translate=new Point(ioc.x-pressed.x,ioc.y-pressed.y);
                    Graphics g=getGraphics();
                    try
                    {
                        g.clearRect(0,0,getSize().width,getSize().height);
                        g.translate(translate.x,translate.y);
                        showStatus("Translate Graphics:"+translate);
                        g.drawImage(img,0,0,TranslateTest.this);
                    }
                    finally
                    {
                        g.dispose();
                    }
                    lastTranslate=translate;
                }
            });
        }
        public void paint(Graphics g)
        {
            g.drawImage(img,0,0,this);
        }