Печать двух JPanels на одной странице - PullRequest
0 голосов
/ 17 сентября 2011

Я пытался напечатать 2 JPanels на той же странице, каждая jpanel идеально помещается на половину страницы.

Что я делаю, так это оборачиваю jpanel в другую jpanel, которая реализует Printable.1004 * Проблема в том, что правильно печатайте только первую (верхнюю) 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 Ответ

1 голос
/ 17 сентября 2011

Во-первых, я думаю , что вы не печатаете их все

вместо

for (int i = 0; i < 1; i++)
{
    pj.setPrintable(listaPaneles.get(i));
    pj.print();
}

1008 * попробовать *

for (JPanel jPanel : listaPaneles)
{
    pj.setPrintable(jPanel);
    pj.print();
}

Во-вторых, может быть, вам нужно обернуть две панели внутри другого контейнера Printable и распечатать только этот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...