有没有办法重新加载/来自applet本身刷新Java小应用程序?(Is there a way to

2019-07-29 06:47发布

我有我的小应用程序(包含在一个浏览器),一个按钮,我想提出的重载或刷新整个小程序的两种方法之一:

  1. 刷新小程序本身,而不必刷新浏览器
  2. 刷新整个浏览器

这可能从applet中?

Answer 1:

使用AppletContext.showDocument(...)方法:

applet.getAppletContext().showDocument(applet.getDocumentBase(), "_self")

这将加载包含在同一窗口/框小程序已经被加载在applet的文件。



Answer 2:

对于你的问题的第一部分,有几个方法。 你可以做给JavaScript调用和删除/从那里重新添加小程序。 使用LiveConnect的从Java调用JS,并且一定要使用“MAYSCRIPT”属性,在applet标记。

在你的JavaScript方法,从DOM中删除的小程序,并添加在它的地方新鲜的。

你也可以把applet的iframe中,它给你更多的选择。

但是,什么是你在重装applet的目标是什么? 这将是小程序,而不是依赖于JavaScript内完全解决这个问题一个更安全的方法(和你的JAR可能会被缓存无论如何,所以你基本上只是重新启动同样的小程序)。

我建议之一:

  • 编写小程序,让您可以在方法调用重置其GUI和数据,或者
  • 运行通过一个小包装器小应用程序,其可以删除/重新创建它显示实际小程序的小程序。

对于包装的小程序的方法:实施AppletStub,实例化实小程序,并将其显示为一个BorderLayout的,这样的事情(在你的start()方法)的中心:

Applet applet = new TheRealApplet();
applet.setStub(this);
this.setLayout( new BorderLayout() );
add( applet, BorderLayout.CENTER );
applet.init();
applet.start();

...然后调用applet.stop()在包装的stop()方法,并添加重启小程序的新方法 - 通过停止它,从布局中移除,并添加一个新的实例。



文章来源: Is there a way to reload/refresh a java applet from within the applet itself?