首先我要说的是这是我最喜欢的Java帮助网站。 (和其他语言)
现在我的问题是,我想截取Java applet的截图
我已经通过java.net.URLClassLoader加载applet并将其添加到我的JFrame中
我可以在我的JFrame中看到它,但我想将其渲染为截图
这里提到了NORMAL applet的解决方案:Taking a "screenshot" of a java applet
但是这个Applet不使用paint也不使用update方法,而是使用getGraphics()方法
我已经注入了AppletStub,因此applet认为他在自己的网站上
但是如何将applet注入getGraphics()方法以将其呈现为屏幕截图?
@Override
public void actionPerformed(final ActionEvent e) {
final String s = e.getActionCommand();
if (s.equals("Screenshot")) {
final BufferedImage offScreen = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
Loader.getApplet().update(offScreen.createGraphics());
try {
ImageIO.write(offScreen, "PNG", new File("C:/Users/Mitchell/Pictures/screenshot.png"));
} catch (Exception ex) { }
}
}
它创建的只是一个黑色的800x600 png图像(空的BufferedImage)。
答案 0 :(得分:0)
如果你可以逃脱它,创建一个有问题的Applet
的子类,并覆盖getGraphics()
,使它返回你的Graphics
对象,然后使用子类而不是原来。