(提前谢谢!如果您需要更多信息,请告诉我。底部的示例代码。)
我试图解决的问题:
我试图让这个 JFileChooser 对象只显示目录(而不是文件),通过使用 javax.swing.filechooser.FileFilter 对象,该对象在 accept(File file) 覆盖方法中有这个:return file.isDirectory();
。但是,至少在我的 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";
}
}
谢谢!
亚历克斯