【问题标题】:Printing two JPanels in a same page在同一页中打印两个 JPanel
【发布时间】:2013-03-13 01:39:25
【问题描述】:

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

请帮帮我,谢谢。

【问题讨论】:

    标签: java printing jpanel


    【解决方案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 容器中并只打印这个。

    【讨论】:

    • 感谢帮助,FOR 的问题是故意的,问题是边框布局
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多