public class PrintImage 
    { 
     /** 
     * 画图片的方法 
     * @param fileName[图片的路径] 
     */ 
     public void drawImage(String fileName){ 
     try 
     { 
     DocFlavor dof = null; 
     //根据用户选择不同的图片格式获得不同的打印设备 
     if(fileName.endsWith(".gif"))
     { 
     //gif 
     dof = DocFlavor.INPUT_STREAM.GIF; 
     }else if(fileName.endsWith(".jpg"))
     { 
     //jpg 
     dof = DocFlavor.INPUT_STREAM.JPEG; 
     }else if(fileName.endsWith(".png"))
     { 
         //png 
     dof = DocFlavor.INPUT_STREAM.PNG;
     } 
     //字节流获取图片信息 
     FileInputStream fin = new FileInputStream(fileName); 
     //获得打印属性 
     PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
     //每一次默认打印一页 
     pras.add(new Copies(1)); 
     //获得打印设备 ,字节流方式,图片格式 
     PrintService pss[] = PrintServiceLookup.lookupPrintServices(dof,pras); 
     //如果没有获取打印机 
     if (pss.length == 0)
     { 
     //终止程序 
     return; 
     } 
     //获取第一个打印机 
     PrintService ps = pss[0]; 
     System.out.println("Printing image..........." + ps); 
     //获得打印工作 
     DocPrintJob job = ps.createPrintJob(); 

     //设置打印内容 
     Doc doc = new SimpleDoc(fin,dof, null); 
     //出现设置对话框 
     PrintService service =ServiceUI .printDialog(null, 50, 50, pss, ps,dof, pras); 
     if(service!=null)
     { 
     //开始打印 
     job.print(doc, pras); 
     fin.close(); 
     } 
     } 
     catch (IOException ie) { 
     //捕获io异常 
     ie.printStackTrace(); 
     } 
     catch (PrintException pe) 
     { 
     //捕获打印异常 
     pe.printStackTrace(); 
     } 
     } 
          }  
    
这段代码无论选择哪个打印机都会选择第一个打印机,怎么获得当前选择的打印机呢?

解决方案 »

  1.   

    我知道了。这么改就可以了。问别人不如问自己啊!public class PrintImage 
        { 
         /** 
         * 画图片的方法 
         * @param fileName[图片的路径] 
         */ 
         public void drawImage(String fileName){ 
         try 
         { 
         DocFlavor dof = null; 
         //根据用户选择不同的图片格式获得不同的打印设备 
         if(fileName.endsWith(".gif"))
         { 
         //gif 
         dof = DocFlavor.INPUT_STREAM.GIF; 
         }else if(fileName.endsWith(".jpg"))
         { 
         //jpg 
         dof = DocFlavor.INPUT_STREAM.JPEG; 
         }else if(fileName.endsWith(".png"))
         { 
             //png 
         dof = DocFlavor.INPUT_STREAM.PNG;
         } 
         //字节流获取图片信息 
         FileInputStream fin = new FileInputStream(fileName); 
         //获得打印属性 
         PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); 
         //每一次默认打印一页 
         pras.add(new Copies(1)); 
         //获得打印设备 ,字节流方式,图片格式 
         PrintService pss[] = PrintServiceLookup.lookupPrintServices(dof,pras); 
         //如果没有获取打印机 
         if (pss.length == 0)
         { 
         //终止程序 
         return; 
         } 
         //获取默认打印机 
         PrintService ps = PrintServiceLookup.lookupDefaultPrintService();
        
        

         //设置打印内容 
         Doc doc = new SimpleDoc(fin,dof, null); 
         //出现设置对话框 
         PrintService service = ServiceUI .printDialog(null, 50, 50, pss, ps,dof, pras);
        
         System.out.println("Printing image..........." + ps); 
         //获得打印工作 
         DocPrintJob job = service.createPrintJob(); 
         if(service!=null)
         { 
         //开始打印 
         job.print(doc, pras); 
         fin.close(); 
         } 
         } 
         catch (IOException ie) { 
         //捕获io异常 
         ie.printStackTrace(); 
         } 
         catch (PrintException pe) 
         { 
         //捕获打印异常 
         pe.printStackTrace(); 
         } 
         } 
              }