我曾尝试在同一页面上打印2张JPanel,每张jpanel完全适合半页。
我所做的是将jpanel包装在另一个实现Printable的jpanel中。
问题在于,只能正确打印第一个(顶部)jpanel,
页面的其余部分用灰色方块填充
这是Wrapper Jpanel的代码
public int print(Graphics graphics, PageFormat pageFormat, int pageIndex)
throws PrinterException
{
if (pageIndex == 0)
{
Graphics2D g2 = (Graphics2D) graphics;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2.scale(.485, .473);
paint(graphics);
g2.setColor(Color.white);
g2.fillRect(0, 0, 1, 1);
return Printable.PAGE_EXISTS;
} else
{
return Printable.NO_SUCH_PAGE;
}
}
这是主叫代码
PrinterJob pj = PrinterJob.getPrinterJob();
pj.setJobName("Factura Procter & Gamble");
if (pj.printDialog())
{
try
{
for (int i = 0; i < 1; i++)
{
pj.setPrintable(listaPaneles.get(i));
pj.print();
}
} catch (PrinterException e)
{
System.out.println(e);
}
}
请帮帮我,谢谢。
答案 0 :(得分:1)
首先,我认为你没有全部打印
而不是
for (int i = 0; i < 1; i++)
{
pj.setPrintable(listaPaneles.get(i));
pj.print();
}
试
for (JPanel jPanel : listaPaneles)
{
pj.setPrintable(jPanel);
pj.print();
}
其次,您可能需要将两个面板包装在另一个Printable
容器中并仅打印此面板。