2009-07-10 5 views
1

Irgendwelche Vorschläge, wie ich das folgende Code-Muster aufräumen kann, das mehrmals in meiner App wiederholt.Swing Thread Callbacks

new Thread(new Runnable() { 
    public void run() { 
    // Do some work here 
    SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
     // Update the Swing Interface to reflect the change 
     } 

    }); 
    } 
}).start(); 

Grundsätzlich gibt es zwei Codeblöcke, der Abschnitt, der die Arbeit an einem anderen Thread erledigt, und den Codeblock, der im Swing-UI-Thread ausgeführt wird.

Ich bin mir ziemlich sicher, dass ich in diesen Blöcken eine Subklasse erstellen kann, aber ich hoffe, dass etwas in der Swing Library das einfacher macht.

Danke.

+0

Soweit ich weiß, wenn Sie etwas auf den Event Dispatch Thread werfen wollen, ist das der Weg, darüber zu gehen. – jjnguy

Antwort

2

Blick auf den SwingWorker Rahmen

+0

Swing Worker verwendet einen Hintergrundthread. Allain möchte die Aktion auf den Event Dispatch Thread setzen. – jjnguy

+0

Eigentlich ist der einzige Teil, den ich im Event Dispatch Thread ausführen muss, der Teil * nachdem * der Hauptblock abgeschlossen wurde, und durch Überschreiben von SwingWorker.done() in der SwingWorker Klasse, bekomme ich dieses Verhalten. –

+0

Nun, dort gehst du !! – jjnguy

1

Das Concurrency in Swing Tutorial ist ein weiterer guter Ort zu suchen. Dort wird auch über SwingWorker diskutiert.