Ho risolto faccio eseguire il codice che eseguiva ActionPerformed ad un thread e in ActionPerformed faccio solo chiamare il thread... Insomma così:

codice:
	public void actionPerformed(ActionEvent e) {
		
		if("dlFile".equals(e.getActionCommand())){
			Thread t1 = new Thread(new PushButtonDownload(a1));	
			t1.start();
             }
e il mio thread è:

codice:
public class PushButtonDownload implements Runnable {
	
	protected JButton a1;
	
	public PushButtonDownload(JButton bottone){
		
		a1 = bottone;
		a1.setEnabled(false);
				
	}
	
	public void run(){
		
		Downloader dl = new Downloader();
		dl.download();
		a1.setEnabled(true);
		
	}

}
In questo modo l'interfaccia grafica non attende la fine di dl.download() il pulsante appena viene premuto non si riabilita finchè dl.download() non ha terminato e ho risolto (credo) il mio problema!!

Grazie mille a tutti voi!!!

Ciao!

mainetz!