2301_78574528 2023-10-21 22:20 采纳率: 71.4%
浏览 5
已结题

JAVA实现Jfilechooser搜索功能

img


这个任务怎么实现,希望得到一份代码参考,重点不会的是 根据路径搜索包含关键词的文件

  • 写回答

8条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2023-10-21 22:20
    关注

    引自强大而免费的微信小程序:皆我百晓生

    以下是一个实现该功能的Java代码示例:

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    
    public class FileSearcher extends JFrame implements ActionListener {
        private JTextField pathTextField;
        private JTextField keywordTextField;
        private JTextArea searchResultTextArea;
    
        public FileSearcher() {
            super("文件搜索工具");
    
            JPanel toolbarPanel = new JPanel();
            JLabel pathLabel = new JLabel("搜索路径:");
            pathTextField = new JTextField(30);
            JButton browseButton = new JButton("浏览");
            JLabel keywordLabel = new JLabel("关键字:");
            keywordTextField = new JTextField(30);
            JButton searchButton = new JButton("搜索");
    
            browseButton.addActionListener(this);
            searchButton.addActionListener(this);
    
            toolbarPanel.add(pathLabel);
            toolbarPanel.add(pathTextField);
            toolbarPanel.add(browseButton);
            toolbarPanel.add(keywordLabel);
            toolbarPanel.add(keywordTextField);
            toolbarPanel.add(searchButton);
    
            searchResultTextArea = new JTextArea(20, 50);
            searchResultTextArea.setEditable(false);
    
            JScrollPane scrollPane = new JScrollPane(searchResultTextArea);
    
            add(toolbarPanel, BorderLayout.NORTH);
            add(scrollPane, BorderLayout.CENTER);
    
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            pack();
            setLocationRelativeTo(null);
            setVisible(true);
        }
    
        @Override
        public void actionPerformed(ActionEvent e) {
            if (e.getActionCommand().equals("浏览")) {
                JFileChooser fileChooser = new JFileChooser();
                fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    
                int result = fileChooser.showOpenDialog(this);
                if (result == JFileChooser.APPROVE_OPTION) {
                    File selectedFile = fileChooser.getSelectedFile();
                    pathTextField.setText(selectedFile.getAbsolutePath());
                }
            } else if (e.getActionCommand().equals("搜索")) {
                String searchPath = pathTextField.getText();
                String keyword = keywordTextField.getText();
    
                List<String> searchResults = searchFiles(searchPath, keyword);
                displaySearchResults(searchResults);
            }
        }
    
        private List<String> searchFiles(String searchPath, String keyword) {
            List<String> searchResults = new ArrayList<>();
    
            File directory = new File(searchPath);
            File[] files = directory.listFiles();
            if (files != null) {
                for (File file : files) {
                    if (file.getName().contains(keyword)) {
                        searchResults.add(file.getAbsolutePath());
                    }
                    if (file.isDirectory()) {
                        searchResults.addAll(searchFiles(file.getAbsolutePath(), keyword));
                    }
                }
            }
    
            return searchResults;
        }
    
        private void displaySearchResults(List<String> searchResults) {
            StringBuilder sb = new StringBuilder();
            for (String result : searchResults) {
                sb.append(result).append("\n");
            }
            searchResultTextArea.setText(sb.toString());
        }
    
        public static void main(String[] args) {
            new FileSearcher();
        }
    }
    

    这段代码实现了一个简单的文件搜索工具界面,并提供了浏览和搜索功能。当用户点击"浏览"按钮时,会弹出一个文件选择对话框,选择完成后在搜索路径输入框中显示所选目录的完整路径。当用户点击"搜索"按钮时,会获取关键字输入框中的内容,然后在选择的搜索路径中搜索包含关键字的文件或文件夹,并将搜索结果显示在文本域中。搜索递归地遍历目录及其子目录,并通过File类的方法来判断文件名是否包含关键字。结果以文件的绝对路径的形式显示在文本域中。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 10月25日
  • 请采纳用户回复 10月25日
  • 创建了问题 10月21日