JProgressBar enquanto método(retorna valor) executa leitura de arquivos XML

Ola Pessoal,
Tenho um pouco de conhecimento em Java e já pesquisei a fundo na internet sobre como utilizar um JProgressBar enquanto executo um método, porem não consegui nenhum exemplo que funcione conforme minha necessidade ja que meu método retorna um valor.
Logica = Tenho uma Classe (CarregarXmls), que possui um método (xmlAut), este método realiza a leitura de n arquivos Xml e adiciona cada um deles em uma lista que seguidamente a lista e adicionada a um tableModel (modeloTabelaAut) . Apos ler o ultimo arquivo o método retorna um TableModel que sera utilizado para preencher uma tabela.
O que preciso = Enquanto o método realizar a leitura gostaria ou de um GIF de aguarde ou um JProgressBar para que a tela não fique estática, dando a impressão que esta travado.
Se alguém puder me fornecer informações de como fazer esta missão seria de enorme ajuda.

Segue código da minha classe CarregarXMLs com o metodo xmlAut:

package br.com.leitorXml;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileNameExtensionFilter;

import br.com.Dados.Dados;
import br.com.UTIL.VerificaString;
import br.com.UTIL.XmlUtil;

public class CarregarXmls extends JFrame
{

	@SuppressWarnings("unused")
	private static final long serialVersionUID = 1295991874261633841L;
	File[]  arquivosCanc = null;
	String diretorioBackup = null, conteudoSelecionado = null;
	 

	int qtdArquivos;
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public ModeloDadosAut xmlAut ()
	{

		JFileChooser fc = new JFileChooser();
		List ListaDadosAut = null;

		final ModeloDadosAut modeloTabelaAut = new ModeloDadosAut();

		// DEVERA ABRIR PASTAS E VARIOS ARQUIVOS
		fc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); // ARQUIVOS E DIRETORIOS
		//		fc.setFileSelectionMode(JFileChooser.FILES_ONLY);  // SOMENTE ARQUIVOS

		// TITULO JANELA
		fc.setDialogTitle("Selecione os arquivos ou uma pasta"); 

		// CRIANDO FILTRO XML
		FileNameExtensionFilter filtroXml = new FileNameExtensionFilter 
				("xml files (*.xml)", "xml");
		fc.setFileFilter(filtroXml); // FILTRANDO SOMENTE ARQUIVOS XMLS
		fc.setMultiSelectionEnabled(true);
		File diretorio;

		// DEFININDO DIRETORIO INCIAL
		//SE A VARIAVEL DIRETORIOBACKUP ESTIVER NULL COLOQUE DIRETORIO INCIAL C:\
		if(diretorioBackup != null)
		{
			diretorio = new File(""+diretorioBackup+"");
		}
		// SE NAO ESTIVER NULL COLOQUE ULTIMO CAMINHO UTILIZADO
		else
			diretorio = new File("c:\\");

		fc.setCurrentDirectory(diretorio);

		//  CRIA POP UP
		int res = fc.showOpenDialog(new JFrame());

		
		//APOS SELECIONAR O BOTAO ABRIR 
		if(res == JFileChooser.APPROVE_OPTION)
		{			
			
			System.out.println("Verificar o que foi selecionado (pasta ou arquivo) = " +fc.getSelectedFile().getAbsolutePath());
			// ATRIBUINDO NA VARIAVEL conteudoSelecionado PARA QUE SEJA UTILIZADO NO METODO ModeloDadosCanc
			conteudoSelecionado = fc.getSelectedFile().getAbsolutePath();



			// SE FOR SELECIONADO UM OU MAIS ARQUIVOS xml RETORNA FALSE
			if(VerificaString.VerificaConteudoSelecionado(fc.getSelectedFile().getAbsolutePath()) == false)
			{
				
				File[] arquivos = fc.getSelectedFiles();  
				arquivosCanc = fc.getSelectedFiles(); // ATRIBUINDO PARA DEPOIS SER UTILIZADO NO METODO XMLCANC
				qtdArquivos = arquivos.length;						
				
				//							JOptionPane.showMessageDialog(null, "Voce escolheu os arquivos: \n" + arquivos.getName());
				System.out.println("Voce selecionou os arquivos listados abaixo:");			

				
				
				for(int i = 0; i < arquivos.length; i++)
				{
					try
					{
						System.out.println("\nDentro do For (autorizados) = "+arquivos[i].toString());
						diretorioBackup = arquivos[i].toString();
						System.out.println("\nDentro do For (autorizados) diretorioBackup "+ diretorioBackup); 
						ListaDadosAut = XmlUtil.lerArquivoAutorizadoReceita(arquivos[i].getPath(), arquivos[i].getName());
						
						modeloTabelaAut.carregarDados(ListaDadosAut);
					}
					catch (Exception e1) 
					{
						// TODO Auto-generated catch block
						e1.printStackTrace();
					}
				}// FIM DO FOR
				return modeloTabelaAut;
			}// FIM DO IF SELECIONANDO ARQUIVOS XML
			
		}
		else
		{
			JOptionPane.showMessageDialog(null, "Voce nao selecionou nenhum arquivo.");			
			return null;
		}
		return modeloTabelaAut;

    	}// Fim do METODO xmlAut

Meu caro,

você terá que usar os conceitos de Threads, considerando. Dê uma olhada neste link do GUJ: Jprogressbar em thread

[]´s

Nilson