我套用以下类,用作打印程序窗体,原在jdk1.5+fedora7(os)中正常,现换为jdk1.6+fedora8(os)中无法打印,请大家看看是什么问题!
http://www.cnblogs.com/ctfzh/archive/2007/07/09/811319.html
/*打印指定的窗体及其包含的组件*/
                        private void printFrameAction()
                        {
                        Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
                        Properties props = new Properties();
                        props.put("awt.print.printer", "durango");//设置打印属性
                        props.put("awt.print.numCopies", "2");
                        if(kit != null)
                        {
                        //获取工具箱自带的打印对象
                        PrintJob printJob = kit.getPrintJob(this, "Print Frame", props);
                        if(printJob != null)
                        {
                        Graphics pg = printJob.getGraphics();//获取打印对象的图形环境
                        if(pg != null)
                        {
                        try
                        {
                        this.printAll(pg);//打印该窗体及其所有的组件
                        }
                        finally
                        {
                        pg.dispose();//注销图形环境
                        }
                        }
                        printJob.end();//结束打印作业
                        }
                        }
                        }

解决方案 »

  1.   


    我将以上举例修改为以下,
    public class PrintClass {
        
        /** Creates a new instance of PrintClass */
        public PrintClass(JFrame jframe) {
            Toolkit kit = Toolkit.getDefaultToolkit(); //获取工具箱
        Properties props = new Properties();
        props.put("awt.print.printer", "durango");//设置打印属性
        props.put("awt.print.numCopies", "1");
        
                if(kit != null)
                {
                    //获取工具箱自带的打印对象 
           
            PrintJob printJob = kit.getPrintJob( jframe, "Print Frame", props); 
                    if(printJob != null)
                    {
                            Graphics pg = printJob.getGraphics();//获取打印对象的图形环境
                        if(pg != null)
                        {
                                                     
                                     try
                                     {
                                               
                                  jframe.print(pg);//打印该窗体及其所有的组件
                            }
                            finally
                            {
                                    pg.dispose();//注销图形环境
                            }
                        }
                        printJob.end();//结束打印作业
                    }
                }
        jframe.removeAll();
        jframe.dispose();
            
        }
        
    }
      

  2.   

    换os和jdk后,在netbeans中编译正常,但执行中以面这一条报错
      PrintJob   printJob   =   kit.getPrintJob(   jframe,   "Print   Frame",   props);