我需要将棋盘保存为 jpeg 文件。我知道如何将 java 组件保存为 JPEG。但我的问题是我使用 JButtons 作为单元格,当我尝试保存整个棋盘时,只保存了面板。有谁知道如何将带有子组件的 JComponent 保存为 JPEG(png 等)。提前谢谢。
问问题
2593 次
3 回答
1
您可以在任何对象上打印Component
(例如)。那么,为什么不使用a 的对象并将其写入磁盘。JPanel
Graphics
Graphics
BufferedImage
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
于 2013-09-14T21:00:23.357 回答
1
查看屏幕图像。它将允许您创建框架中任何组件的图像。如果您选择制作面板的图像,则所有子组件都包含在图像中。
于 2013-09-14T21:05:38.137 回答
0
使用 Robot 类创建屏幕的屏幕截图。
使用本教程寻求帮助: Screen Capture using Robot class
现在对于您的棋盘,通过调用 BufferedImage 类的 subImage 方法来剪切图像。
您可以通过调用 getX()、getY()、getWidth() 和 getHeight() 方法获取 JPanel 的尺寸,这些方法可以传递给 subImage 方法。通过添加/减去一些值来操作传递值以获得所需的结果。
于 2013-09-14T21:06:07.407 回答