2009-12-07 109 views
0

編輯:解決了一些問題後,我遇到的更大問題是由我正在使用的Apache POI導致的。我正在努力解決這個問題。顯然它受到沙箱的限制。java swing和web start的線程問題

我對Swing很陌生,並創建了一個小的Swing應用程序,我現在需要通過web開始運行。我正在嘗試使用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

沒有一個簡短的代碼示例說明你在做什麼,沒有人可以開始猜測你錯在哪裏。 – 2009-12-07 19:21:42

+0

我想我可能會提供一些東西。短短几分鐘。 – Casey 2009-12-07 19:27:40

+0

您是否創建了新的主題?如果是的話......他們是幹什麼用的?如果不是,是什麼讓你認爲這是一個線程問題?它可能很容易成爲一個錯字。 – 2009-12-07 19:31:25

回答

0

我遇到的問題與此無關。在我試圖執行此操作的位置的另一部分代碼中,導致應用程序退出。這是我在嘗試實現這一目標時錯過的其他東西。

0

要調用* .openFileDialog(FOO,吧)吧?

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

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

很抱歉,如果這是一個愚蠢的問題,但要等到與源更新你的問題,我想不出別的的多。