首页 > Java > java教程 > 如何捕获渲染的 JTable 图像中的表头?

如何捕获渲染的 JTable 图像中的表头?

Susan Sarandon
发布: 2024-11-07 18:04:02
原创
695 人浏览过

How to Capture the Table Header in a Rendered JTable Image?

在渲染图像中捕获 JTable 标头

问题:

捕获 JTable 的图像时,表头不不会出现在结果图像中。

原因:

当面板绘制到图像上时,JTable 标题不是层次结构的一部分,因为它已经当 JOptionPane 关闭时被删除。

kleopatra 的解决方案:

  1. 添加 p.addNotify();在创建 BufferedImage 将标题添加回层次结构之前。
  2. 使用 p.validate() 验证面板;强制对所有容器进行递归重新布局,确保它们相信它们有一个对等点。

camickr 的解决方案:

  1. 使用 ScreenImage。创建图像(p);捕获图像,该图像处理标题删除和添加。
  2. 如果使用此方法,请设置 table.setPreferredScrollableViewportSize(table.getPreferredSize());防止 JScrollPane 干扰渲染。

更新代码:

...
// Without having been shown, fake a all-ready
p.addNotify();

// Manually size to preferred
p.setSize(p.getPreferredSize());

// Validate to force recursive doLayout of children
p.validate();

BufferedImage bi = new BufferedImage(p.getWidth(), p.getHeight(), BufferedImage.TYPE_INT_RGB);

Graphics g = bi.createGraphics();
p.paint(g);
g.dispose();
...
登录后复制

结论:

两种解决方案都可以有效地在结果图像中呈现 JTable 标头。 kleopatra 的解决方案利用核心 J2SE,而 camickr 的解决方案则利用 ScreenImage API 来实现附加功能。选择取决于应用程序的具体要求。

以上是如何捕获渲染的 JTable 图像中的表头?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板