0

編集:いくつかの問題を修正した後、私が抱えているより大きな問題は、私が使用しているApachePOIが原因です。私は今それを理解することに取り組んでいます。どうやらそれはサンドボックスによって制限されています。

私はSwingを初めて使用し、小さなSwingアプリを作成しました。このアプリは、WebStartを介して実行する必要があります。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();
    }
}
4

2 に答える 2

0

私が抱えていた問題は、これとは何の関係もありませんでした。これを行おうとしていた場所のすぐ近くにあるコードの別の部分で、アプリケーションの終了を引き起こしていました。これは、私がこれを実装しようとしていたときに見逃された、私が試していた何かからのホールドオーバーでした。

于 2009-12-23T18:56:55.533 に答える
0

*.openFileDialog(foo,bar) を呼び出していますよね?

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

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

これがばかげた質問である場合は申し訳ありませんが、質問をソースで更新するまで、他にあまり考えられません。

于 2009-12-07T19:33:43.677 に答える