我的applet上有一个按钮(包含在浏览器中),我希望以两种方式重新加载或刷新整个applet:
这可以在小程序中实现吗?
答案 0 :(得分:3)
使用AppletContext.showDocument(...)方法:
applet.getAppletContext().showDocument(applet.getDocumentBase(), "_self")
这会将包含applet的文档加载到已加载applet的同一窗口/框架中。
答案 1 :(得分:0)
对于问题的第一部分,有几种方法。您可以调用JavaScript并从那里删除/重新添加applet。使用LiveConnect从Java调用JS,并确保在applet标记中使用“MAYSCRIPT”属性。
在JavaScript方法中,从DOM中删除applet并添加一个新的applet。
您也可以将applet放在iFrame中,这样可以提供更多选项。
但是你重新加载applet的目的是什么?在applet中完全解决这个问题是一种更安全的方法,而不是依赖于JavaScript(而且你的JAR很可能会被缓存,所以你基本上只是重新启动相同的applet)。
我建议:
对于包装器applet方法:实现AppletStub,实例化真正的applet,并将其显示为BorderLayout的中心,类似这样(在你的start()方法中):
Applet applet = new TheRealApplet();
applet.setStub(this);
this.setLayout( new BorderLayout() );
add( applet, BorderLayout.CENTER );
applet.init();
applet.start();
...然后在包装器的stop()方法中调用applet.stop(),并添加一个重新启动applet的新方法 - 通过停止它,从布局中删除它,以及添加一个新的实例。