2009-12-07 2 views
0

편집 : 몇 가지 문제를 수정 한 후 내가 사용중인 더 큰 문제는 내가 사용중인 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(); 
    } 
} 
+1

당신이하고있는 일을 보여주는 간단한 코드 샘플이 없으면 아무도 어디로 잘못 가고 있는지 추측하기 시작할 수 없습니다. –

+0

나는 뭔가를 제공 할 수있을 것 같아. 몇 분. – Casey

+0

새 스레드를 만들었습니까? 그렇다면 ... 그들은 무엇을 위해서입니까? 그렇지 않다면 무엇이 스레딩 문제라고 생각합니까? 오타가 될 수도 있습니다. –

답변

0

내가 가진 문제는이 문제와 아무 관련이 없습니다. 이 작업을 수행하려는 곳 근처에서 내 코드의 다른 부분에서 응용 프로그램 종료가 발생했습니다. 나가 이것을 실행하기에 종사 할 때 놓쳐 버린 나가 밖으로 시도하고 있던 다른 것에서 파악이었다.

0

당신은 호출 * .openFileDialog (foo는, 바) 바로 이것이 내가 업데이트를하고있는 중이 야 어디? 이 바보 같은 질문이지만 소스와 질문을 업데이트 할 때까지 다른 많은 생각할 수없는 경우

FileOpenService fos = (FileOpenService)ServiceManager.lookup("javax.jnlp.FileOpenService"); 

FileContents fc = fos.openFileDialog(null, null); 

죄송합니다.