我正在尝试通过使用具有以下内容的javax.swing.filechooser.FileFilter对象,即在accept(File file)重写方法中:return file.isDirectory();
,以使此JFileChooser对象仅显示目录(而不是文件)。 但是,至少在我的Mac上,似乎无法防止文件与目录一起显示(除非使用setFileSelectionMode()方法防止选择文件)。
问题:
我错过了什么吗? 如果没有,是否有人曾经遇到过这种情况?
我所理解的/假设的:
- 当您将javax.swing.filechooser.FileFilter对象传递给JFileChooser的
setFileFilter()
方法时,应该会出现魔术般的效果。 - 看起来我的带有setFileFilter()的JFileChooser的行为就像使用
setSelectionMode(JFileChooser.DIRECTORIES_ONLY);
一样。
代码:
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";
}
}
谢谢!
Alex