如何打印jpanel的内容作为文本?

时间:2012-01-15 23:57:10

标签: java printing

我正在使用netbeans,我有代码打印jpanel,它工作正常。但是,它的输出是它将jpanel打印为图像。这对我来说并不理想,因为它还在背景中打印出褪色的灰色,这是jpanel的大小。我只想在包含许多jlabel的jpanel中打印文本。有没有办法将jpanel的内容打印为文本而不是图像?

这是我用来打印jpanel

内容的代码
    PrinterJob job = PrinterJob.getPrinterJob();
     job.setJobName("jPanel13");

     job.setPrintable (new Printable() {    
        public int print(Graphics pg, PageFormat pf, int pageNum){
            if (pageNum > 0){
            return Printable.NO_SUCH_PAGE;
            }

            Graphics2D g2 = (Graphics2D) pg;
            g2.translate(pf.getImageableX(), pf.getImageableY());
            jPanel13.paint(g2);
            return Printable.PAGE_EXISTS;
        }
     });
     boolean ok = job.printDialog();
     if (ok) {
         try {
              job.print();
         } catch (PrinterException ex) {

         }

这是我需要打印的jpanel的打印屏幕。在我的程序中,jlabels的文本值可以由用户更改。然后将打印jlabels文本以填写表格中的空白行。表格上已有写作;打印时我只会填充空白行。这就是为什么jlabels以这种方式定位的重要原因。

http://i.stack.imgur.com/kPKWe.jpg

enter image description here

1 个答案:

答案 0 :(得分:3)

如果JPanel背景是唯一的问题,您可以在其上调用print()而不是paint(),并覆盖printComponent()不执行任何操作(默认只调用{ {1}})。

或者,只需在打印时将背景颜色设置为白色。