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ボタンをクリックすると、ファイルダイアログが正常に表示され、ディレクトリを閲覧してファイルを確認できますが、OpenまたはOKボタンを押すことはできません。クリックしてもダイアログは表示されたままになります。

スレッドに問題があると思います。これは、アプレットのGUIスレッドやイベントディスパッチスレッドではなく、「HTMLとJS」スレッドで何とかして実行しています。

問題を解決する方法は?

4

1 に答える 1

1

JavaScriptから呼び出される信頼できるアプレットのメソッドは、Javaがスタック内のすべてのコードフレームを考慮できないため、信頼されなくなりました。問題を修正するには、AccessController.doPrivileged(..)オーバーロードされたメソッドの1つを使用します。

于 2012-05-30T12:36:54.257 に答える