有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

safari在通过代码浏览URL时释放java小程序资源

我有一个Java小程序,它提供了一个JButton,允许用户导航到另一个URL(它有一个反馈表单)

问题:当我在Safari中从小程序导航到表单时,在表单中键入内容是混乱的或不可能的(实际上只输入了大约10次按键)

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

以下是浏览到URL的代码:

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或ActionListener(在JButtons上)。因此,更令人困惑的是,我的键盘出现了问题。我尝试在applet的stop方法中手动删除它们(我在finally块中手动调用),但没有帮助。离开页面导航时,MouseeEvents和ActionEvents不应继续运行

编辑2:进一步信息:让小程序打开一个新窗口,其中包含最终调查的链接也不起作用。但是,在新窗口中打开链接(使用html的target=“\u blank”)似乎可以解决问题。为了解决这个问题,我让applet将用户引导到一个启动页面,感谢他们,然后为最终调查提供一个链接。这是令人恼火的胡言乱语,并没有回答最初的问题,但现在看来,这似乎是我将要去的


共 (0) 个答案