天天看点

JComponent调用print(),出图背景是黑色问题

最近做一个小项目,要实现截取一个JComponent,然后输出到pdf上面

其中出现几个问题,有点意思。累出来

1、截图背景是黑色问题

截图是调用JComponent.print()实现。

  BufferedImage image = new BufferedImage(imgW + xgap * 2, imgH + ygap * 2,  BufferedImage.TYPE_INT_ARGB);
  Graphics2D g = (Graphics2D) image.getGraphics();
   g.translate(xgap, ygap);
  g.scale(imgW * 1.0 / componentSize.width, imgH * 1.0 / componentSize.height);
  component.print(g);      

然后就可以通过BufferedImage传递这个图片。

然后通过iText里面的输出到pdf里面,方法是

Image.getInstance(java.awt.Image,Color)

我是把图片插入到表格里面。

            PdfPCell imager = new PdfPCell();

              java.awt.Image  rpanelImage=(java.awt.Image)rpanel;

              Image rpanel1=Image.getInstance(rpanelImage,null);

              imager.addElement(rpanel1);

              imager.setColspan(6);

               table.addCell(imager);

但是输出的图片总是黑底。。

后来,看了半天发现。截取的JComponent叫Rpanel,是继承JPanel。

然后覆盖了paint() 方法。