JFileChooser窗口中不顯示擴展名文件。這裏是我的過濾器類:JFileChooser上不顯示擴展名文件
import java.io.File;
public class AudioFilter extends javax.swing.filechooser.FileFilter{
public boolean accept(File f){
if (f.isDirectory()){
return true;
}
String extension = Utils.getExtension(f);
if (extension != null){
if (extension.equals(Utils.wav)
|| extension.equals(Utils.aif)
|| extension.equals(Utils.rmf)
|| extension.equals(Utils.au)
|| extension.equals(Utils.mid)){
return true;
}else{
return false;
}
}
return false;
}
public String getDescription(){
return "wav, aif, rmf, au, mid";
}
}
class Utils{
public final static String wav = "wav";
public final static String aif = "aif";
public final static String rmf = "rmf";
public final static String au = "au";
public final static String mid = "mid";
/*
* Get the extension of a file.
*/
public static String getExtension(File f){
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1){
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
}
這裏是我的代碼來調用過濾過程:
AudioFilter audiofiler = new AudioFilter();
boolean openFile() throws FileNotFoundException{
JFileChooser jfc = new JFileChooser();
jfc.setDialogTitle("Open File");
jfc.setFileSelectionMode(JFileChooser.FILES_ONLY);
jfc.setCurrentDirectory(new File ("."));
jfc.setFileFilter(audiofilter);
int result = jfc.showOpenDialog(this);
if(result == JFileChooser.CANCEL_OPTION){
return true;
}else if(result == JFileChooser.APPROVE_OPTION){
fFile = jfc.getSelectedFile();
String file_string = readFile (fFile);
if(fFile.isDirectory()){
String[] filesInDirectory = fFile.list();
for(int i=0;i<filesInDirectory.length;i++){
jList1.setModel(list);
list.addElement(filesInDirectory[i]);
}
}
if(file_string != null){
fTextArea.setText(file_string);
}else{
return false;
}
}
return true;
}
最好使用[AudioSystem.getAudioFileTypes()](http://download.oracle.com/javase/6/docs/api/javax/sound/sampled/AudioSystem.html#getAudioFileTypes%28 %29)來確定當前JRE支持哪些音頻類型。例如,我的JRE(沒有通過SPI添加任何其他聲音類型)報告它理解'WAVE','AU'和'AIFF'。我不確定RMF。 WikiPedia聲稱Java Sound支持它,可能它沒有列在採樣聲音格式中,因爲它可以包含MIDI數據。但無論如何,如果Java Sound突然支持「SND」或「MP3」,我們希望將它們包含在列表中。 – 2011-03-24 06:52:36