通过代码浏览到URL时释放java applet资源

时间:2014-03-08 01:53:42

标签: java safari applet resource-cleanup

我有一个Java小程序,它提供了一个允许用户导航到另一个URL(具有反馈形式)的JButton。

问题:当我从小程序导航到Safari中的表单时,输入表单会出现乱码或不可能(实际上只有每10次键击一次)。

手动终止Safari的Java Web插件会立即修复此问题。我假设我在某种程度上不能在我的applet中正确释放资源。我知道应该在stop()方法中执行清理,但是我不确定我未能释放哪些资源可能导致这种行为。

以下是浏览网址的代码:

final JButton btnLaunch = new JButton("Go to survey");
final myJApplet mj = this;
    btnLaunch.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent arg0) {
            String url ="www.mywebform.example";

            try {
                getAppletContext().showDocument(new URL(url));
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            }
            finally {
                SwingUtilities.getWindowAncestor(btnLaunch).dispose();
                mj.stop();
            }
      }

我最好的猜测是,Safari通过将资源传递给某些Java ActionListener来错误处理资源。但是,包括:

btnLaunch.removeActionListener(this);
finally块中的

似乎没有帮助。我的applet中有其他动作监听器,我知道这些监听器没有被明确销毁,但我认为通常这不是问题,因为它们应该被自动处理掉。

编辑:检查我的代码,似乎我只有MouseListener或ActionListeners(在JButtons上)。所以我有一个键盘问题更令人费解。我尝试在applet的stop方法中手动删除它们(我在finally块中手动调用),但它没有帮助。导航离开页面时,MouseEvents和ActionEvents不应继续运行!

编辑2:更多信息:让applet打开一个新窗口,然后包含最终调查的链接也不起作用。但是,在新窗口中打开链接(使用html的target =“_ blank”)似乎可以解决问题。因此,为了解决这个问题,我让applet将用户引导到一个感谢它们的启动页面,然后提供最终调查的链接。这是令人烦恼的kludgey,并没有回答原来的问题,但现在看起来我将要用的是什么。

0 个答案:

没有答案