我试图将JFrame渲染成图像,而不必显示JFrame本身(类似于此问题所问的内容)。我已经尝试使用以下代码:
private static BufferedImage getScreenShot(Component component)
{
BufferedImage image = new BufferedImage(component.getWidth(), component.getHeight(), BufferedImage.TYPE_INT_RGB);
// call the Component's paint method, using
// the Graphics object of the image.
component.paint(image.getGraphics());
return image;
}
然而,只有在设置
JFrame
的setVisible(true)
时才能有效。这将导致图像显示在屏幕上,这不是我想要的结果。我也尝试创建如下内容:public class MyFrame extends JFrame
{
private BufferedImage bi;
public MyFrame(String name, BufferedImage bi)
{
this.bi = bi;
super(name);
}
@Override
public void paint(Graphics g)
{
g.drawImage(this.bufferedImage, 0, 0, null);
}
}
然而,这会显示黑色图像(就像上面的代码)。我相当确信我要实现的是可能的,问题在于我无法找到如何做到。我对自定义Swing组件的经验非常有限,因此任何信息都将不胜感激。
谢谢。