在同一页面中打印两个JPanel

时间:2011-09-17 04:44:08

标签: java printing jpanel

我曾尝试在同一页面上打印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);
            }
        }

请帮帮我,谢谢。

1 个答案:

答案 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容器中并仅打印此面板。