你的Canvas对象can必须实例化,还要加到程序界面上才行呀。
我试过了,没问题。

解决方案 »

  1.   

    可我不要界面啊
    我要的是打印出Graphics!
      

  2.   

    You should pass Graphics object. Like this:/// Called by system. repaint()->update()->
    public void Paint(Graphics g) {
     //
     abc.function(g);
    }
      

  3.   

    or create Image.image.getGraphics()
      

  4.   

    import java.awt.*;
    public class printtest extends Frame 
    {
        public printtest(String title) 
        {
            super(title);
        }
        
        public static void main(String[] args) 
        {
            try
             {
                printtest f = new printtest("Print Test");
                f.setSize(200,200);
                f.pack();
                //f.show();
                
                PrintJob pj = Toolkit.getDefaultToolkit().getPrintJob(f,"Print Test", null);
                if(pj != null) 
                {
                    Graphics g = pj.getGraphics();
                    g.drawOval(100,100,100,100);
                    f.printComponents(g);
                    g.dispose();
                    pj.end();
                }
                else
                {System.out.println("pj=null");
                 System.exit(0);
                }
            }
            catch (Exception e) {
                System.out.println(e);
            }
        }
    }
    //现在问题是 pj==null,不知为什么,昨天也是这程序但pj!=null,今天pj==null ?