我想限制一个JFileChooser
只能选择MP3文件。但是,下面的代码允许选择所有类型的文件:
FileFilter filter = new FileNameExtensionFilter("MP3 File","mp3");
fileChooser.addChoosableFileFilter(filter);
fileChooser.showOpenDialog(frame);
File file = fileChooser.getSelectedFile();
我想限制一个JFileChooser
只能选择MP3文件。但是,下面的代码允许选择所有类型的文件:
FileFilter filter = new FileNameExtensionFilter("MP3 File","mp3");
fileChooser.addChoosableFileFilter(filter);
fileChooser.showOpenDialog(frame);
File file = fileChooser.getSelectedFile();
尝试使用fileChooser.setFileFilter(filter)
代替fileChooser.addChoosableFileFilter(filter);
如果你只想要 MP3 文件:
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileNameExtensionFilter;
public class SalutonFrame {
public static void main(String[] args) {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setAcceptAllFileFilterUsed(false);
FileNameExtensionFilter filter = new FileNameExtensionFilter("MPEG3 songs", "mp3");
fileChooser.addChoosableFileFilter(filter);
fileChooser.showOpenDialog(null);
}
}
尝试:
FileFilter filter = new FileNameExtensionFilter("My mp3 description", "mp3");
第一个参数仅仅是对FileNameExtensionFilter
的描述 - 由于第二个参数是var args,因此您可以像之前那样省略它,这意味着没有任何过滤器。
fileChooser.addChoosableFileFilter(filter)
方法将自定义文件过滤器添加到可供用户选择的过滤器列表中。默认情况下,可供用户选择的过滤器列表包括“接受所有”过滤器,该过滤器允许用户查看所有非隐藏文件。
您需要调用:fileFilter.setAcceptAllFileFilterUsed(false)
setAcceptAllFileFilterUsed(boolean)
方法确定是否在可选择的过滤器列表中使用“接受所有”文件过滤器。如果为false
,则从可用文件过滤器列表中删除“接受所有”文件过滤器。如果为true
,则“接受所有”文件过滤器将成为主动使用的文件过滤器。
JFileChooser jfc=new JFileChooser(System.getProperty("user.dir","."));
FileFilter ff = new FileFilter(){
public boolean accept(File f){
if(f.isDirectory()) return true;
else if(f.getName().endsWith(".mp3")) return true;
else return false;
}
public String getDescription(){
return "MP3 files";
}
};
jfc.removeChoosableFileFilter(jfc.getAcceptAllFileFilter());
jfc.setFileFilter(ff);
if(jfc.showDialog(frame,"openG")==JFileChooser.APPROVE_OPTION){
String fileName = jfc.getSelectedFile().getPath();
}