![](/img/trans.png)
[英]How to save a scrollable JPanel as a jpeg image (not as a snapshot)
[英]How to save JPanel as JPEG with its components
我需要将棋盘保存为jpeg文件。 我知道如何将java组件保存为JPEG。 但我的问题是我使用JButtons作为单元格,当我尝试保存整个棋盘时,只保存面板。 有没有人知道如何将JComponent与其子系统COMPNENTS保存为JPEG(png等) 。提前感谢您。
您可以将Component
(例如JPanel
)打印到任何Graphics
对象。 那么,为什么不使用BufferedImage
的Graphics
对象并将其写入磁盘。
void takePicture(JPanel panel) {
BufferedImage img = new BufferedImage(panel.getWidth(), panel.getHeight(), BufferedImage.TYPE_INT_RGB);
panel.print(img.getGraphics()); // or: panel.printAll(...);
try {
ImageIO.write(img, "jpg", new File("panel.jpg"));
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这使得这个JPanel
JPanel panel = new JPanel();
panel.add(new JButton("Hello"));
panel.add(new JButton("World"));
看起来像这样:
根据评论更新,非常感谢@MadProgrammer
查看屏幕图像 。 它将允许您创建框架中任何组件的图像。 如果您选择制作面板的图像,则所有子组件都包含在图像中。
使用Robot类创建屏幕截屏。
使用本教程获取帮助: 使用Robot类进行屏幕捕获
现在为您的棋盘,通过调用BufferedImage类的subImage方法剪辑图像。
您可以通过调用getX(),getY(),getWidth()和getHeight()方法来获取JPanel的Dimensions,您可以将这些方法传递给subImage方法。 通过添加/减去一些值来操纵传递值以获得所需的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.