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.