Ale*_* Ku 7 java swing jfilechooser filefilter
(提前致谢!如果您需要更多信息,请告诉我.底部的示例代码.)
我正试图解决的问题:
我试图让这个JFileChooser对象只显示目录(而不是文件),通过使用在accept(文件文件)重写方法中具有此功能的javax.swing.filechooser.FileFilter对象:return file.isDirectory();.但是,至少在我的Mac上,它似乎并不会阻止文件与目录一起显示(它确实可以防止在不使用setFileSelectionMode()方法的情况下选择文件).
题
我错过了什么吗?如果没有,有没有人曾经遇到过这个?
我的理解/假设:
setFileFilter()方法时,会发生魔法.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";
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢!
亚历克斯
Hov*_*els 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";
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您仍然遇到问题,最好是创建自己的SSCCE来演示您的问题.
编辑
屏幕截图,了解它在OS X下的JDK1.7
