打印JFrame时出现问题

时间:2015-12-29 12:03:14

标签: java swing printing

我正在为朋友的公司制作一个程序,我需要打印JFrame一堆JLabel和其他东西。直到这里没问题。

当我打印JFrame时,我有一些JLabel因为某些未知原因而自动连接。当我在打印之前显示JFrame时,我对自动连接等显示功能没有任何问题。 但是当我打印它时,它在纸上连接起来...... 我一直在互联网上寻找数小时试图解决它但却一无所获。

我会分享我用来打印的代码,因为似乎问题来自这里:

public void test() throws PrinterException
    {
        PageFormat format = new PageFormat();

        Paper paper = new Paper();
        paper.setImageableArea(0.0,0.0,Double.MAX_VALUE,Double.MAX_VALUE);
        format.setPaper(paper);

        PrinterJob jb = PrinterJob.getPrinterJob();
        format = jb.validatePage(format);
        jb.setPrintable(this, format);
        jb.print();
        dispose();
    }

    public int print(Graphics g, PageFormat pf, int page)
            throws PrinterException 
    {
        if (page > 0)
            {
                return NO_SUCH_PAGE;
            }

        Dimension dim = this.getSize();
        double cHeight = dim.getHeight();
        double cWidth = dim.getWidth();

        double pHeight = pf.getImageableHeight();
        double pWidth = pf.getImageableWidth();

        double pXStart = pf.getImageableX();
        double pYStart = pf.getImageableY();

        double xRatio = pWidth / cWidth;
        double yRatio = pHeight / cHeight;
        Graphics2D g2 = (Graphics2D)g;
        g2.translate(pXStart, pYStart);
        g2.scale(xRatio, yRatio);
        this.paint(g2);
        return Printable.PAGE_EXISTS;
    }

顺便说一句,今年我开始使用Java,而且我是一个新手:)

0 个答案:

没有答案