我的问题如下:我在HTML页面中嵌入了JApplet
,并使用app调用公共方法的JS调用form
按钮:
<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
}
我在我的小程序中编写这样的代码&#39;公共方法:
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按钮时,文件对话框显示正常,我可以浏览目录并检查文件,但我不能按打开或确定按钮 - 我点击但是对话仍然存在。
我认为线程有问题 - 我仍然以某种方式在&#34; HTML和JS&#34;线程,而不是我的小程序&#39; GUI线程或事件派发线程。
如何解决问题?
答案 0 :(得分:1)
从JavaScript调用的受信任applet中的方法不再受信任,因为Java无法解释堆栈中的所有代码帧。要解决此问题,请使用AccessController.doPrivileged(..)
重载方法之一。