1

我的问题如下:我有一个JApplet嵌入到 HTML 页面和一个form 带有小程序公共方法的 JS 调用的按钮:

<input id="btnAppletSelectFiles" type="button" value="Select Files" 
    onclick="document.appletExcelUploader.SelectFiles();" />

在我的 JApplet 中,我有 FileChooser,例如:

public class ExcelUploader extends JApplet {

    private JFileChooser fc = new JFileChooser();
    // Some stuff
}

我正在我的小程序的公共方法中编写这样的代码:

  public void SelectFiles() {
        int retVal = fc.showOpenDialog(ControlsPanel.this);

        if (retVal == JFileChooser.APPROVE_OPTION) {
            for (File file : fc.getSelectedFiles()) {
                System.out.println(file.getName());
            }
        }
    }

因此,当单击 HTML 按钮时,文件对话框正常显示,我可以浏览目录并检查文件,但我不能按OpenOK按钮 - 我单击它但对话框仍然存在。

我认为我的线程有问题 - 我仍然以某种方式在“HTML 和 JS”线程中执行此操作,而不是在我的小程序的 GUI 线程或事件调度线程中。

如何解决问题?

4

1 回答 1

1

从 JavaScript 调用的受信任小程序中的方法不再受信任,因为 Java 无法解释堆栈中的所有代码帧。要解决此问题,请使用其中一种AccessController.doPrivileged(..)重载方法。

于 2012-05-30T12:36:54.257 回答