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);
}
}