import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;   public class canvaser extends Applet implements ActionListener {      Button button1;
      BoxCanvas boxcanvas;
      int loop_index;
                                                                               
      public void init() {
         
         add(button1=new Button("Move Rectangle"));
         button1.addActionListener(this);
        
         boxcanvas=new BoxCanvas();
         boxcanvas.resize(150,250);
         add(boxcanvas);        
 
     }      public void actionPerformed(ActionEvent event) {
         
            if(event.getSource()==button1) {
            for(loop_index=0; loop_index<250; loop_index++) {
               boxcanvas.setLocation(loop_index,50);
     }    }   }
  
  }      class BoxCanvas extends java.awt.Canvas {
         Image image;
        
         public void init() {
            image = getImage(getCodeBase(),"java.gif");
            
      }   
         
         public void paint(Graphics g) {
            
            g.drawImage(image,0,0,30,30,this);      }    }  
  

解决方案 »

  1.   

    这是因为在"image = getImage(getCodeBase(),"java.gif");"中
    getImage()和getCodeBase()这两个方法都是Applet类中的的方法,
    因此当然把class BoxCanvas extends java.awt.Canvas
    换成class BoxCanvas extends Applet时运行通过,
    但是这可能没是你想要的,它可能会与你的本意相背
      

  2.   

    我已经在第一段内容中调入了,APPLET类,在下面的BoxCanvas扩展类中还用导入么?
    再说了一上面的方法去该,那么这段代码也就失去了它原由的意义。