Pesquisa de Arquivos em Tempo Real

Olá pessoal tudo bem? Eu estou resolvendo uma atividade que pede um programa que fornece o recurso de pesquisa de arquivos em tempo real. À medida que o usuário for digitando o nome de um diretório na caixa de texto o programa deve pesquisar e exibir na área de texto os nomes de todos os arquivos e subdiretórios que encontrar no diretório, cujo nome está na caixa de texto.
Eu consegui fazer com que ele liste as pastas do diretório “C:/”, mas as subpastas e arquivos ele não lista. Se alguém conseguir me ajudar eu agradeço.

Segue o código:

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.File;
import java.io.FileFilter;

public class PesquisarArquivoGUI extends JFrame  {

	private static final long serialVersionUID = 1L;
	private JPanel contentPane;
	private JTextField textField;
	private JTextArea textArea = new JTextArea();

	public PesquisarArquivoGUI() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 410, 423);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);

		JLabel lblDiretrio = new JLabel("Diret\u00F3rio:");
		lblDiretrio.setFont(new Font("Tahoma", Font.PLAIN, 14));
		lblDiretrio.setBounds(10, 11, 64, 17);
		contentPane.add(lblDiretrio);

		textField = new JTextField();
		textField.addKeyListener(new KeyAdapter() {
			@Override
			public void keyPressed(KeyEvent e) {
				File arquivo = new File("C:\\");
				
				File[] lista = arquivo.listFiles(new FileFilter() {
					
					@Override
					public boolean accept(File pathname) {
						return pathname.getName().contains(textField.getText());
					}
				});
				
				for(File f : lista)
					textArea.setText(f.getPath());
			}
		});
		
		
		textField.setBounds(73, 11, 311, 20);
		contentPane.add(textField);
		textField.setColumns(10);

		textArea.setWrapStyleWord(true);
		textArea.setLineWrap(true);
		JScrollPane scrollPane = new JScrollPane(textArea);
		scrollPane.setBounds(0, 43, 394, 341);

		contentPane.add(scrollPane);

		setVisible(true);
	}



}

A ideia não é ir apresentando a lista de arquivos dentro de um determinado diretório, inserido pelo usuário? Por que isso

???

@darlan_machado é porque é para listar a partir da pasta raiz do sistema, ou seja se o usuário digitar um arquivo, é para aparecer todos os diretórios que contém o arquivo desde a pasta raiz

Entendi.
Bom, você vai precisar, provavelmente, de algo recursivo.
Para começar, você deve isolar em um método

public void exibeArquivos(String path) {
    File file = new File(path);
    File[] subFiles = file.listFiles();
    for(File f : subFiles) {
        if(f.exists() && f.isDirectory()) {
           exibeArquivos(f);
        }
    }
}