JFrame na obraz bez pokazywania JFrame
Próbuję renderować ramkę JFrame na obraz bez wyświetlania samej ramki JFrame (podobnie do tego, coto pytanie pyta). Próbowałem użyć tego fragmentu kodu:
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;
}
Jednak działa to tylko wtedy, gdyJFrame
jestsetVisible(true)
jest ustawiony. Spowoduje to wyświetlenie obrazu na ekranie, czego nie chcę. Próbowałem też stworzyć coś takiego:
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);
}
}
Wyświetla to jednak czarne obrazy (jak powyższy kod). Jestem całkiem pewien, że to, czego oczekuję, jest możliwe, problem polega na tym, że tak naprawdę nie mogę znaleźć. Moje doświadczenie z niestandardowymi komponentami Swing jest dość ograniczone, więc wszelkie informacje zostaną docenione.
Dzięki.