(Thanks in advance! Please let me know if you need more info. Sample code at the bottom.)
Problem I'm trying to solve:
I'm trying to get this JFileChooser object to display only directories (and not files), through the use of a javax.swing.filechooser.FileFilter object that has this in the accept(File file) overridden method: return file.isDirectory();
. However, at least on my mac, it doesn't seem to prevent files from being displayed along with the directories (it does prevent files from being selected without using the setFileSelectionMode() method).
Question
Am I missing something? If not, has anyone ever encountered this before?
My understanding/assumptions:
- The magic should happen when you pass in a javax.swing.filechooser.FileFilter object into the JFileChooser's
setFileFilter()
method. - Seems like my JFileChooser with setFileFilter() is behaving like its using of
setSelectionMode( JFileChooser.DIRECTORIES_ONLY );
Code
import java.io.File;
import javax.swing.filechooser.FileFilter;
// inside a method that's adding this to a JPanel
_fileChooser = new JFileChooser( "." );
_fileChooser.setControlButtonsAreShown( false );
_fileChooser.setFileFilter( new FolderFilter() );
// _fileChooser.setFileSelectionMode( JFileChooser.DIRECTORIES_ONLY );
_panelMidLeft.add( _fileChooser );
// an inner class, defined somewhere else in the class
private class FolderFilter extends javax.swing.filechooser.FileFilter {
@Override
public boolean accept( File file ) {
return file.isDirectory();
}
@Override
public String getDescription() {
return "We only take directories";
}
}
Thanks!
Alex