0

我需要将棋盘保存为 jpeg 文件。我知道如何将 java 组件保存为 JPEG。但我的问题是我使用 JButtons 作为单元格,当我尝试保存整个棋盘时,只保存了面板。有谁知道如何将带有子组件的 JComponent 保存为 JPEG(png 等)。提前谢谢。

4

3 回答 3

1

您可以在任何对象上打印Component(例如)。那么,为什么不使用a 的对象并将其写入磁盘。JPanelGraphicsGraphicsBufferedImage

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 方法来剪切图像。

这是剪辑 BufferedImage 的链接

您可以通过调用 getX()、getY()、getWidth() 和 getHeight() 方法获取 JPanel 的尺寸,这些方法可以传递给 subImage 方法。通过添加/减去一些值来操作传递值以获得所需的结果。

于 2013-09-14T21:06:07.407 回答