final BufferedImage image = new BufferedImage(window.getWidth(), window.getHeight(), BufferedImage.TYPE_INT_ARGB);
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
Graphics2D g = image.createGraphics();
window.paint(g);
g.dispose();
}
});
return image;