如何使用setVisible(false)从JFrame创建图像



我创建了一个JFrame,它基本上创建了一个网格,并进行了一些计算,我需要从中获取图像,我目前使用的是:

public static BufferedImage createImageFromFrame(Component component) {
    int w = component.getWidth();
    int h = component.getHeight();
    BufferedImage image = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
    component.paint( image.getGraphics() );
    return image;
}
调用:

JFrame window = new JFrame();
// set stuff
BufferedImage img = d.createImageFromFrame(window.getContentPane());

这样就可以了。但现在我想从不同的帧中创建多个图像,我不想让每个图像都出现在屏幕上,我只想要从它们生成的图像。但是我注意到我不能使用setVisible(false),因为它给出了java.lang.IllegalArgumentException: Width (0) and height (0) cannot be <= 0

有没有什么工作,或者什么可以改变,可以帮助我完成?

打包框架并将其移出显示的可见区域。例如:

frame.pack();
frame.setLocation(-2000, -2000);
frame.setVisible(true);
// There you go, the frame won't be visible

最新更新