我要打印创建的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);
}
}
}
答案 0 :(得分:0)
java为什么在默认打印机上打印的问题是:
您已经构建了一个jar文件并在其中运行该应用程序。 不要尝试在NetBeans-IDE上运行。