public class AppletPrintTest extends Applet
{
   public void init()
   { 
     Frame aFrame = new Frame();
     Toolkit toolkit = Toolkit.getDefaultToolkit();
     PrintJob job = toolkit.getPrintJob(aFrame,"hello",null);
     Graphics g = job.getGraphics();
     g.drawString("Hello world",50,100);
     g.dispose();
     job.end();
   }
   
}
这个applet单独调试成功,可是当我把applet改成public class AppletPrintTest extends Applet
{
   public void init()
   { 
   }   
   public void print(){
     Frame aFrame = new Frame();
     Toolkit toolkit = Toolkit.getDefaultToolkit();
     PrintJob job = toolkit.getPrintJob(aFrame,"hello",null);
     Graphics g = job.getGraphics();
     g.drawString("Hello world",50,100)
     g.dispose();
     job.end();
   }
   
}然后用一个html调用
<APPLET NAME="objPrint1"...../><INPUT type="image" border="0" name="imageField" 
       src="../images/print/Print.gif" border=0 
       onclick="document.objPrint1.print()">时候Graphics g = job.getGraphics();就是个null;谁能帮我看看

解决方案 »

  1.   

    Applet 每次都是从init()方法进行加载的,你将init()方法设置为空方法。当然是不行的。init()方法用于applet的初始化。当applet加载时,该方法被自动调用。数据成员的初始化动作必须在init()方法中才会有效,否则将不会完成初始化动作。你将数据成员的初始化,都放在print()方法中,当然是不行的了。这样可以理解吗?