다음과 같이 내 문제는 다음과 같습니다애플릿 내에서 스윙 UI와 함께 작동 할 수 없습니다 - 공공 메소드를 호출
<input id="btnAppletSelectFiles" type="button" value="Select Files"
onclick="document.appletExcelUploader.SelectFiles();" />
: 나는 HTML 페이지에 포함 된 JApplet
및 애플릿의 공개 방법의 JS 호출과 form
버튼이 있습니다 내 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 단추를 클릭하면 파일 대화 상자가 정상적으로 표시됩니다. 디렉토리를 탐색하고 파일을 검사 할 수는 있지만 누를 수는 없습니다. 열기 또는 OK 버튼 -이 파일을 클릭해도 대화 상자가 유지됩니다.
스레드에 문제가 있다고 생각합니다. 여전히 "HTML 및 JS"스레드에서 수행하고 내 애플릿의 GUI 스레드 또는 이벤트 발송 스레드에서는 수행하지 않습니다.
문제를 해결하는 방법?
하지만 애플릿 안에 버튼을 추가하고 거기에서 대화를 호출하면 모든 것이 정상입니다. –
- 자바 코드가 서명 된 그대로 애플릿 업로드가 작동합니다. - JS 브라우저 스레드가 UI가있는 애플릿에 액세스하여 작동을 멈 춥니 다. - 애플릿이 브라우저 스레드에서 실행됩니다. - 논리적으로 보이는 모든 스레드에 대해 브라우저 보안이 동일하면 , 문제는 –