(先谢谢!如果您需要更多信息,请告诉我。底部的示例代码。)
我正试图解决的问题:
我试图让这个JFileChooser对象只显示目录(而不是文件),通过使用javax.swing.filechooser.FileFilter对象在accept(文件文件)覆盖方法中有这个:{{ 1}}。但是,至少在我的Mac上,它似乎不会阻止文件与目录一起显示(它确实阻止了文件的选择而不使用setFileSelectionMode()方法)。
问题
我错过了什么吗?如果没有,有没有人曾经遇到过这个?
我的理解/假设:
return file.isDirectory();
方法时,应该会发生魔术。setFileFilter()
的使用代码
setSelectionMode( JFileChooser.DIRECTORIES_ONLY );
谢谢!
亚历
答案 0 :(得分:15)
您的代码适合我。我的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";
}
}
}
如果您仍然遇到问题,最好是创建自己的SSCCE来证明您的问题。
修改的
使用JDK1.7在OS X下的外观截图