편집 : 몇 가지 문제를 수정 한 후 내가 사용중인 더 큰 문제는 내가 사용중인 Apache POI 때문입니다. 나는 지금 그것을 알아 내려고 노력하고있다. 분명히 그것은 샌드 박스에 의해 제한되고 있습니다.자바 스윙 및 웹 시작과 관련된 스레딩 문제
저는 Swing을 처음 접했고 웹 시작을 통해 실행해야하는 작은 스윙 앱을 만들었습니다. FileOpenService를 사용하고 텍스트 디스플레이를 업데이트하려고합니다. FileOpenService 대화 상자가 나타나지 않고 내 텍스트 표시가 업데이트되지 않기 때문에 스레드 문제가 발생한다고 생각합니다.
나는 그들이 지금 현재와 다른 것을하고있는 어떤 예도 찾을 수 없습니다.
아이디어가 있으십니까?
감사합니다.
편집 : 이제 FileOpenService 대화 상자가 나타납니다. 메인을 다음으로 변경했습니다 :
public static void main(String[] args) throws Exception {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MainFrame();
}
});
}
그러나 디스플레이를 업데이트 할 수 없습니다.
Runnable r = new Runnable() {
public void run() {
for (final String s : Logger.getMessages())
append(s + "\n");
}
};
try {
if (SwingUtilities.isEventDispatchThread())
r.run();
else
SwingUtilities.invokeAndWait(r);
}
내 APPEND 방법 :
private void append(Color c, String s) {// throws Exception {
StyleContext sc = StyleContext.getDefaultStyleContext();
AttributeSet aset = sc.addAttribute(SimpleAttributeSet.EMPTY,
StyleConstants.Foreground, c);
int len = _textPaneLog.getDocument().getLength();
try {
_textPaneLog.getDocument().insertString(len, s, aset);
} catch (BadLocationException e) {
e.printStackTrace();
}
}
당신이하고있는 일을 보여주는 간단한 코드 샘플이 없으면 아무도 어디로 잘못 가고 있는지 추측하기 시작할 수 없습니다. –
나는 뭔가를 제공 할 수있을 것 같아. 몇 분. – Casey
새 스레드를 만들었습니까? 그렇다면 ... 그들은 무엇을 위해서입니까? 그렇지 않다면 무엇이 스레딩 문제라고 생각합니까? 오타가 될 수도 있습니다. –