我试图打印一个包含很多内容的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());


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

谢谢大家的帮助。

最佳答案

Math.ceil(page.height/format.getImageableY());我要打败formatnull

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

因此,您可以使用它们之一获取PageFormat

07-24 19:20