gpt4 book ai didi

java - 如何注入(inject)Java小程序的getGraphics()方法?

转载 作者:行者123 更新时间:2023-12-01 05:41:58 24 4
gpt4 key购买 nike



首先我想说的是,这是我最喜欢的 Java 帮助站点。 (和其他语言)
现在我的问题是,我想截取 Java 小程序的屏幕截图。
我已通过 java.net.URLClassLoader 加载小程序并将其添加到我的 JFrame 中。
我可以在 JFrame 中看到它,但我想将其渲染为屏幕截图。
这里提到了NORMAL小程序的解决方案:Taking a "screenshot" of a java applet
但这个Applet不使用paint或update方法,而是使用getGraphics()方法。
我已经注入(inject)了 AppletStub,因此小程序认为他在自己的网站上。
但是我如何注入(inject)小程序的 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)。

最佳答案

如果您能逃脱惩罚,请创建相关Applet 的子类,并重写getGraphics(),以便它将返回您的Graphics 对象,然后使用子类而不是原始类。

关于java - 如何注入(inject)Java小程序的getGraphics()方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6927346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com