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