Java, GUI i thread’s

Klasycznie tworząc aplikacje GUI musimy mieć na uwadze jej wielowątkowątkowość. W ActionListener implementować prywatne klasy runnable, thread etc.. metoda sprawdzona i działająca jednak w Java 6 mamy coś nowego, co pozwala na szybkie “oblikanie” wątków. Mowa tutaj o SwingWorker, świetna funkcjonalność – zajmuje się pbsługą wątków za nas, np:

Przykład ActionPerformed:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
{
    if(praca != null && !praca.isDone()) return;
    praca  = new pracuje();
    praca.execute();
}

Implementacja klasy pracuje:

private class pracuje extends SwingWorker<Integer, Integer>
{
    @Override
    public Integer doInBackground()
    {
        //Robie duzo obliczen
        wynik = jakiesobliczenia();
        return wynik;
    }
   
    @Override
    protected void done()
    {
        System.out.println("done");
        jLabel5.setText( "Zrobione" );
    }
}

Czyś nie przyjemnie ?
Mnie się bardzo ta metoda podoba.