(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:
setFileFilter()
method.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
Your code works for me. My SSCCE:
import java.io.File;
import javax.swing.JFileChooser;
public class ShowDirectoriesOnly {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser( "." );
fileChooser.setControlButtonsAreShown( false );
fileChooser.setFileFilter( new FolderFilter() );
fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fileChooser.showOpenDialog(null);
}
private static 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";
}
}
}
If you're still having problems, your best is to create your own SSCCE that demonstrates your problem.
Edit
Screenshot on how it looks under OS X with JDK1.7