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 コンポーネントに関する私の経験はかなり限られているため、情報をいただければ幸いです。
ありがとう。