Frage

EDIT: Nach ein paar Probleme beheben, das größere Problem, das ich habe ist von Apache POI verursacht wird, die ich verwende. Ich arbeite, dass jetzt auf herauszufinden. Offenbar ist es durch die Sandbox beschränkt zu sein.

Ich bin sehr neu Swing und erstellt eine kleine Schaukel App, die ich brauche jetzt über Web-Start lief haben. Ich versuche, die FileOpenService zu verwenden und eine Textanzeige zu aktualisieren. Ich glaube, ich in Threadingprobleme leite, weil der FileOpenService Dialog nie angezeigt wird, und meine Textanzeige wird nicht aktualisiert zu werden.

Ich kann nicht wirklich keine Beispiele finden, wo sie verschiedene etwas zu tun sind, als ich es jetzt bin.

Ideen?

Danke!

Edit: Ich nun den FileOpenService Dialog haben erscheint. Ich änderte meine Haupt dazu:

public static void main(String[] args) throws Exception {
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new MainFrame();
        }
    });
}

Aber ich kann immer noch nicht meine Anzeige erhalten zu aktualisieren. Dies ist, wo ich das Update tue:

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

und meine append-Methode:

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();
    }
}
War es hilfreich?

Lösung 2

Das Problem, das ich hatte nichts mit irgendetwas davon zu tun. In einem anderen Teil meines Codes direkt in der Nähe, wo ich versuche, dies zu tun, ich verursache eine Anwendung zu beenden. Es war eine Macht über von etwas, das ich versuchte aus, dass verpasst bekam, als ich an der Umsetzung dieser arbeitete.

Andere Tipps

Sie rufen * .openFileDialog (foo, bar) nicht wahr?

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

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

Sorry, wenn dies eine dumme Frage, aber bis Sie Ihre Frage mit Quelle aktualisieren kann ich glaube, nicht viel anders.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top