问题:
捕获 JTable 的图像时,表头不不会出现在结果图像中。
原因:
当面板绘制到图像上时,JTable 标题不是层次结构的一部分,因为它已经当 JOptionPane 关闭时被删除。
kleopatra 的解决方案:
camickr 的解决方案:
更新代码:
... // 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中文网其他相关文章!