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 { @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.