0

我试图打印一个包含很多内容的JPanel,它有点大,需要知道页面数和页面格式。但是当我试图在车道碰撞中了解这些事情并且我有一个空指针异常。

这是一小段代码:

private Component componentToBePrinted;
private PageFormat format;
private int numPages;

componentToBePrinted = this.PanelMatricula;
Dimension page = this.componentToBePrinted.getPreferredSize();

numPages = (int) Math.ceil(page.height/format.getImageableY());// Nullpointerexception 
print(componentToBePrinted.getGraphics(), format, this.getNumberOfPages());

我是印刷界的新手,我不知道失败是什么,我研究了很多,但没有找到任何解决方案。

谢谢大家的帮助。

4

2 回答 2

2

Math.ceil(page.height/format.getImageableY());我正在殴打formatnull

功能:创建一个新的printerJob.defaultPage()PageFormat 实例并将其设置为默认大小和方向。并 printerJob.getPageFormat(PrintRequestAttributeSet attributes)计算一个 PageFormat ,其值与当前 PrintService 支持的值(即 由 的返回值getPrintService())以及属性中包含的媒体、可打印区域和方向一致。

因此,您可以使用其中任何一个来获取PageFormat.

于 2013-10-14T16:39:30.807 回答
2

确保PageFormat format已初始化

PrinterJob job = PrinterJob.getPrinterJob();
PageFormat format = job.defaultPage();

阅读:基本打印程序

于 2013-10-14T17:08:21.367 回答