FileFilter for JFileChooser

我想限制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);

尝试:

 FileFilter filter = new FileNameExtensionFilter("My mp3 description", "mp3"); 

第一个参数只是FileNameExtensionFilter的描述 – 由于第二个参数是var args,你可以像你一样把它留下来,实际上意味着没有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); } } 

fileChooser.addChoosableFileFilter(filter)会将自定义文件filter添加到用户fileChooser.addChoosableFileFilter(filter)器列表中。 默认情况下,用户可选择的filter列表包括“ 全部接受”filter,该filter允许用户查看所有非隐藏文件

您将需要调用: fileFilter.setAcceptAllFileFilterUsed(false)

setAcceptAllFileFilterUsed(boolean)确定AcceptAll FileFilter是否在可选择的筛选器列表中用作可用选项。 如果为false ,则从可用文件筛选器列表中删除AcceptAll文件筛选器。 如果为true ,则AcceptAll文件筛选器将成为活动使用的文件筛选器。

此代码段可以帮助您:

 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(); }