PageFormat变量中的nullpointerexception

时间:2013-10-14 16:34:53

标签: java swing printing jpanel

我试图打印一个包含大量内容的JPanel,它有点大,需要知道页数和页面格式。但是当我试图在车道崩溃中知道这些事情并且我有一个nullpointer例外。

这是一段很短的代码:

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());

我是印刷品的新手,我不知道失败的原因,我研究了很多而且没有找到任何解决方案。

感谢大家的帮助。

2 个答案:

答案 0 :(得分:2)

Math.ceil(page.height/format.getImageableY());我正在讨论format null

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

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

答案 1 :(得分:2)

确保PageFormat format已初始化

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

阅读:A Basic Printing Program