ITPub博客

首页 > Linux操作系统 > Linux操作系统 > JComponent调用print(),出图背景是黑色问题

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

原创 Linux操作系统 作者:张国平 时间:2010-01-25 22:58:53 0 删除 编辑

最近做一个小项目,要实现截取一个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() 方法。

paint()方法中,用 Graphics.clearRect(0, 0, 620, 260);对底图进行清空

删除该语句即可正常截图显示

另外最近一直在看iText,有问题可以多多交流

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22259926/viewspace-625989/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SAP 金融风险管理产品专家

注册时间:2009-08-05

  • 博文量
    138
  • 访问量
    331389