2015-08-03 132 views
1

我在网上搜索了一种从代码打印的方法,但是我发现了只能打印文本的建议。 我真正需要的是打印jScrollPane中包含的每个元素。每个元素都是一个包含图像和文本的jPanel。打印JscrollPane对象

​​

例如,我需要打印2个面板图像中,因为它们。 我该如何存档?可能吗?先谢谢你!

+0

简短的回答是,不要使用'Jasper Repots'之类的东西。更长更复杂的答案是让你使用'printAll'并将组件渲染到打印机的'Graphics'上下文中,这很麻烦,因为你需要维护每个页面y偏移量的信息,处理分页符以及可能的重叠:P ...另一种解决方案是根据页面索引获取每个组件并计算它在页面上的位置,这样您可以控制绘制到页面上的组件的数量并处理分页符。 – MadProgrammer

+0

虽然会受到警告,但这会影响您的视觉/实况组件,所以您需要在完成后重新验证它(或创建一个屏幕版本)并记住使用'printAll'! – MadProgrammer

回答

0

使用下面的代码:

PrinterJob pj = PrinterJob.getPrinterJob(); 
    pj.setJobName(" Print Component "); 

    pj.setPrintable(new PrintableImpl(comp)); 

    if (!pj.printDialog()) { 
     return; 
    } 
    try { 
     pj.print(); 
    } catch (PrinterException ex) { 
     System.out.println(ex); 
    } 

哪里comp是您JScrollPane观。在PrintableImpl你可以实现你的拟合/缩放。