为什么Java总是在Windows默认打印机上打印?

时间:2019-03-22 08:48:17

标签: java printing

我要打印创建的JPanel。但是,如果用户希望通过PrintDialog选择打印机,则无论选择哪个打印机,它始终在Windows的默认打印机上打印。

这是我的代码:

首先我创建pageBook

public static Book  pBook = new Book(); 

 public static class ReportPage implements Printable{
    @Override
    public int print(Graphics graphics, PageFormat pageFormat, int pageIndex) {
        if (pageIndex >= 1) {
            return Printable.NO_SUCH_PAGE;
        }
        Graphics2D g2d = (Graphics2D) graphics;
        //g2d.scale(0.2275d,0.225d);
        pagePanel.paint(g2d);

        return Printable.PAGE_EXISTS;
    }
}

打印方法:

public static void printReport(){
    PrinterJob pj = PrinterJob.getPrinterJob();
    PageFormat pf = new PageFormat();
    Paper paper   = pf.getPaper();
    pf.setPaper(paper);
    pBook.append(new ReportPage(),pf);
    pj.setPageable(pBook);      
    if (pj.printDialog()) {
        try {pj.print();}
            catch (PrinterException exc){
            System.out.println(exc);
        }
    }   
}

1 个答案:

答案 0 :(得分:0)

java为什么在默认打印机上打印的问题是:

您已经构建了一个jar文件并在其中运行该应用程序。 不要尝试在NetBeans-IDE上运行。