在使用类加载器加载的applet上绘制

时间:2013-01-12 22:43:11

标签: java graphics applet classloader render

我想知道在已经加载的applet上渲染我自己的图形的最佳/最简单方法是什么:

public class Game {

    public static Applet applet = null;
    public static URLClassLoader classLoader = null;

    public static void load() {
        try {
            classLoader = new URLClassLoader(new URL[]{Jar.getJar().toURL()});
            applet = (Applet) classLoader.loadClass("com.funkypool.client.PoolApplet").newInstance();
            applet.setSize(new Dimension(800, 600));
            applet.setBackground(Color.BLACK);
            applet.setStub(new Stub());
            applet.init();
            applet.start();

            JFrame loader = new JFrame("Loader");
            loader.setPreferredSize(applet.getSize());
            loader.add(applet);
            loader.pack();
            loader.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我希望它在applet上呈现,但是applet仍然保留了它的所有原始功能,我相信我可能需要使用反射?我正在考虑查看Powerbot.org渲染runescape客户端的方式,因为客户端仍然保留其所有功能等。

如果您有任何疑问或需要查看更多代码,请询问。

1 个答案:

答案 0 :(得分:0)

假设这画了一些东西(我的applet-fu生锈了),那么你可以把它放在JFrame上,然后将JFrames'void paint(Graphics g)子类化,以便绘制它想要的东西,并且然后描绘其他东西。

执行此操作的修改后的JFrame可以是以下内容(警告:未经测试的代码):

public static class OverlayJFrame extends JFrame {
     private JPanel overlay;
     public OverlayJFrame(String title) { super(title); }
     public void setOverlay(JPanel overlay) { this.overlay = overlay; }
     public void paint(Graphics g) { super.paint(g); overlay.setSize(getSize()); overlay.paint(g)); }
}