java文件对话框过滤特定文件类型示例


在Java中,如果你想通过文件对话框(例如,使用`JFileChooser`)来过滤特定类型的文件,你可以通过设置`JFileChooser`的`FileFilter`来实现。以下是一个简单的示例,展示了如何创建一个文件过滤器来仅显示`.txt`文件:


import javax.swing.*;
import java.awt.event.ActionEvent;
import java.io.File;

public class FileFilterExample extends JFrame {

    public FileFilterExample() {
        JButton button = new JButton("选择TXT文件");
        button.addActionListener(e -> {
            JFileChooser fileChooser = new JFileChooser();
            // 设置文件过滤器
            fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {
                @Override
                public boolean accept(File f) {
                    // 接受目录和txt文件
                    return f.isDirectory() || f.getName().toLowerCase().endsWith(".txt");
                }

                @Override
                public String getDescription() {
                    return "TXT Files (*.txt)";
                }
            });

            // 显示对话框
            int returnVal = fileChooser.showOpenDialog(this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fileChooser.getSelectedFile();
                // 可以在这里处理选定的文件
                System.out.println("Selected file: " + file.getAbsolutePath());
            }
        });

        add(button);
        setSize(300, 200);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setVisible(true);
    }

    public static void main(String[] args) {
        new FileFilterExample();
    }
}

在这个示例中,我们创建了一个简单的Swing窗口,其中包含一个按钮。点击按钮会弹出一个文件选择对话框,该对话框仅显示`.txt`文件(和目录,因为目录通常也被接受以便用户可以选择文件夹)。这是通过实现`FileFilter`接口并覆盖其`accept`和`getDescription`方法来实现的。`accept`方法决定了哪些文件应该被显示在对话框中,而`getDescription`方法则提供了过滤器的描述,这将在对话框的文件类型下拉菜单中显示。