# Java Notes

# javax.swing.filechooser.FileFilter

See File Filters.
By default, a file chooser shows all user files and directories in a file chooser dialog, with the exception of "hidden" files in Unix (those starting with a '.').
To create a custom file filter to show only specific files in a file chooser dialog, subclass `javax.swing.filechooser.FileFilter` and use this with the chooser (see JFileChooser).
Because there is an interface (`java.io.FileFilter`) and a class (`javax.swing.filechooser.FileFilter`), use the fully qualified name to prevent conflicts in any code that also includes `java.io.*`.

## Creating a chooser FileFilter

Create a class that extends `javax.swing.filechooser.FileFilter`, and define two methods: `accept` and `getDescription`. For example, to create a filter that will show all directories and only files that end with ".sql",

    class SQLfilter extends javax.swing.filechooser.FileFilter {
        public boolean accept(File f) {
            return f.isDirectory() || f.getName().toLowerCase().endsWith(".sql");
        }

        public String getDescription() {
            return "SQL files";
        }
    }

This example defines the two required methods. Always accept directories so that the user can navigate around the file system.

## Setting a FileFilter

Call the JFileChooser's `setFileFilter` method. To use the filter from the example above:

    JFileChooser chooser = new JFileChooser();
    chooser.setFileFilter(new SQLfilter());
    chooser.showOpenDialog(null);