我试图打印一个包含大量内容的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());
我是印刷品的新手,我不知道失败的原因,我研究了很多而且没有找到任何解决方案。
感谢大家的帮助。
答案 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();