如何注入Java applet的getGraphics()方法?

时间:2011-08-03 13:39:21

标签: java



首先我要说的是这是我最喜欢的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)。

1 个答案:

答案 0 :(得分:0)

如果你可以逃脱它,创建一个有问题的Applet的子类,并覆盖getGraphics(),使它返回你的Graphics对象,然后使用子类而不是原来。