java swing和web start的线程问题

时间:2009-12-07 19:17:46

标签: java swing java-web-start

编辑:修复了一些问题之后,我遇到的更大问题是由我正在使用的Apache POI引起的。我正在努力解决这个问题。显然它受到沙盒的限制。

我对Swing很新,并创建了一个小型Swing应用程序,我现在需要通过Web start运行。我正在尝试使用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);
    } 

和我的追加方法:

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();
    }
}

2 个答案:

答案 0 :(得分:0)

你正在调用* .openFileDialog(foo,bar)吗?

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

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

很抱歉,如果这是一个愚蠢的问题,但在您使用来源更新您的问题之前,我无法想到其他问题。

答案 1 :(得分:0)

我遇到的问题与此无关。在我的代码的另一部分就在我试图这样做的地方附近,我正在导致应用程序退出。当我正在努力实现这个时,这是我尝试过的其他东西的延续。