Problema com JFileChooser recursividade

Pessoal, estou tentando fazer ler o diretório qualquer que entra dentro dos sub diretório.

Tenho todo código pronto, está até funcionando, mas para fazer ler sub diretório acho que tenho que criar uma recursividade, tenho o conceito ± recursividade, assim e tranquilo fazer um método repercussivo de fatorial, soma, essas coisas, mas não estou conseguindo assimilar com o JFileChooser. Quem se habilita a dar um help?

veja meu método.


protected void do_btnDiretorio_actionPerformed( ActionEvent arg0 ) {
		
		// Instanciando Diretorio
		JFileChooser abrir = new JFileChooser();
		
		// Selecionando maias de um arquivo
		abrir.setMultiSelectionEnabled( false );

		// restringe a amostra a diretorios apenas
		abrir.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
		
		// Abrindo diretorio
		abrir.showOpenDialog( this );
		       
		try
		{
			
			File diretorio = abrir.getSelectedFile();
			
			if( diretorio.exists() )
			{
				if( diretorio.isDirectory() )
				{
					// Armazena o nome do Diretorios em um Array de String
					String[] arrayDiretorio = diretorio.list();
					
					for( String diretorioNome : arrayDiretorio )
					{
						textAreaSelecao.append( diretorioNome );
						textAreaSelecao.append( "\n" );
					}				
				}
			}
			else 
			{
				JOptionPane.showMessageDialog( null, "Diretorio nao existe" );
			}
		}
		catch ( Exception  erro ) 
		{
			
		}
	}

Minha classe completa. Estou usando o Windowbuilder


package gui;

import java.awt.BorderLayout;

public class JFileChose extends JFrame implements ActionListener {

	private JPanel contentPane;
	private JButton btnDiretorio;
	private JScrollPane scrollPane;
	private JTextArea textAreaSelecao;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					JFileChose frame = new JFileChose();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public JFileChose() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		this.contentPane = new JPanel();
		this.contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(this.contentPane);
		
		this.btnDiretorio = new JButton("Abrir Diretorio");
		btnDiretorio.addActionListener(this);
		
		scrollPane = new JScrollPane();
		GroupLayout gl_contentPane = new GroupLayout(this.contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addContainerGap()
					.addGroup(gl_contentPane.createParallelGroup(Alignment.LEADING)
						.addComponent(scrollPane, GroupLayout.DEFAULT_SIZE, 422, Short.MAX_VALUE)
						.addComponent(btnDiretorio))
					.addContainerGap())
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGroup(gl_contentPane.createSequentialGroup()
					.addComponent(btnDiretorio)
					.addPreferredGap(ComponentPlacement.RELATED, 16, Short.MAX_VALUE)
					.addComponent(scrollPane, GroupLayout.PREFERRED_SIZE, 217, GroupLayout.PREFERRED_SIZE)
					.addGap(32))
		);
		
		textAreaSelecao = new JTextArea();
		scrollPane.setViewportView(textAreaSelecao);
		this.contentPane.setLayout(gl_contentPane);
	}

	public void actionPerformed(ActionEvent arg0) {
		if (arg0.getSource() == btnDiretorio) {
			do_btnDiretorio_actionPerformed(arg0);
		}
	}
	protected void do_btnDiretorio_actionPerformed( ActionEvent arg0 ) {
		
		// Instanciando Diretorio
		JFileChooser abrir = new JFileChooser();
		
		// Selecionando maias de um arquivo
		abrir.setMultiSelectionEnabled( false );

		// restringe a amostra a diretorios apenas
		abrir.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
		
		// Abrindo diretorio
		abrir.showOpenDialog( this );
		       
		try
		{
			
			File diretorio = abrir.getSelectedFile();
			
			if( diretorio.exists() )
			{
				if( diretorio.isDirectory() )
				{
					// Armazena o nome do Diretorios em um Array de String
					String[] arrayDiretorio = diretorio.list();
					
					for( String diretorioNome : arrayDiretorio )
					{
						textAreaSelecao.append( diretorioNome );
						textAreaSelecao.append( "\n" );
					}				
				}
			}
			else 
			{
				JOptionPane.showMessageDialog( null, "Diretorio nao existe" );
			}
		}
		catch ( Exception  erro ) 
		{
			
		}
	}
}

Método repercussivo? O que seria isso?
Primeiro, JFileChooser é um componente Swing, ou seja, ele renderiza um diálogo em que é possível navegar na estrutura de diretórios e pastas do sistema.
Agora eu pergunto, onde você quer colocar a recursividade?
Pense no Windows Explorer, ele é um exemplo do que o JFileChooser deve fazer.
Ele aplica recursividade? Se sim, me explique como.

Serio você não sabe o que e recursividade? ou está brincando comigo?

Agora eu pergunto, onde você quer colocar a recursividade?

recursividade foi uma logica que eu pensei, não sei se o certo, pelo menos não consigo analisar como fazer ele para entrar no sub diretório.

Vou falar meu objetivo,

Meu S.O e Linux

tenho o diretorio raiz. /

quando eu selecionar ( / ) barra

ele deve varrer todo os subdiretório entendeu?

[quote=Astesio]Serio você não sabe o que e recursividade? ou está brincando comigo?

Agora eu pergunto, onde você quer colocar a recursividade?

recursividade foi uma logica que eu pensei, não sei se o certo, pelo menos não consigo analisar como fazer ele para entrar no sub diretório.

Vou falar meu objetivo,

Meu S.O e Linux

tenho o diretorio raiz. /

quando eu selecionar ( / ) barra

ele deve varrer todo os subdiretório entendeu? [/quote]
Você leu a documentação do JFileChooser?
Você conhece o conceito de recursividade?
Deixa eu mudar a pergunta para ver se você consegue entender.
Quando você abre o console e acessa o diretório raiz (/). ele já varre todos os subdiretórios e arquivos?
Por que você precisa do comando ls? Por que precisa do comando cd?

E quanto a tua pergunta, se você não se dá ao trabalho de reler o que escreve (e escreve mal, por sinal), para ver se está inteligível, você escreveu

Recursivo e repercussivo são duas coisas bem diferentes.

[quote=http://www.priberam.pt/dlpo/default.aspx?pal=recursivo]recursivo
(recurso + -ivo)
adj.

  1. Que se pode repetir até ao infinito.
  2. Relativo a recursividade.[/quote]

[quote=http://www.priberam.pt/dlpo/default.aspx?pal=repercussivo]repercussivo
adj.
Que possui a propriedade de produzir repercussão.[/quote]
Entendeu ou prefere que eu desenhe?

Não entendi v+ vou entender pode apostar nisso, procurei esse fórum porque sempre tive boas referencia, peço desculpa pela minha falta de atenção, só que eu achei que o fórum fosse um lugar que as pessoas pudessem tirar suas duvidas, e não um lugar de pessoas mau educadas. Pode deixar que eu dou meu jeito. De qualquer forma obrigado.

Veja se isso te ajuda:
http://www.guj.com.br/88-percorrer-subpastas-que-estao-dentro-de-uma-pasta-e-contar-o-numero-de-paginas-de-cada-pdf-guardado-nelas#answer-168

Obrigado, vou olhar sim, muito obrigado pela atenção. Abraços