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.