Java 打印多个组件

Java 打印多个组件,java,swing,printing,jpanel,awt,Java,Swing,Printing,Jpanel,Awt,我尝试在一个打印作业中向打印机发送JTable和JPanel,如下所示: PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet(); attr.add(OrientationRequested.LANDSCAPE); MessageFormat header = new MessageFormat("Page {0}");

我尝试在一个打印作业中向打印机发送JTable和JPanel,如下所示:

            PrintRequestAttributeSet attr = new HashPrintRequestAttributeSet();
            attr.add(OrientationRequested.LANDSCAPE);

            MessageFormat header = new MessageFormat("Page {0}");
            Printable p1 = table.getPrintable(JTable.PrintMode.FIT_WIDTH, header, null);

            PageFormat pf = new PageFormat();                

            Printable p2 = new ComponentPrinter().returnIt(jPanel1);

            Book book = new Book();
            book.append(p1, pf);
            book.append(p2, pf);

            PrinterJob pj = PrinterJob.getPrinterJob();

            pj.setPageable(book);

            if (pj.printDialog(attr)){
                try {
                    pj.print(attr);
                } catch (PrinterException ex) {
                    Exceptions.printStackTrace(ex);
                }
            }
我的问题是,这只打印添加到书中的第一个可打印文件;在本例中,JTable。如果我交换订单并首先添加面板,那么它只打印面板。有人能指出错误吗?

答案在于


该书将错误的页面索引传递给添加的可打印内容。有关更多信息和解决方案,请单击链接。

有帮助吗?遗憾的是,没有。这与我做的事情几乎相同。它确实让我想到尝试printDialog()和print()方法,而不是带参数的方法。然后,“打印机”对话框显示要打印的两页,但只打印一页。我试着只打印第二页,但是打印工作被卡住了。答案是[这里][这里][这里]:现在,我该如何结束这个问题?不,不是页面格式,我也试过了。