2016-12-13 4 views
0

JFileChooserでは、FileFilterにワイルドカードを使用できますか?JFileChooserで特定のファイル名形式のみを選択できるようにする

ファイルブラウザが開いたときすべての* .defファイルの中から* _SomeFixedFormat.defファイルのような特定のファイルを選択します。

FileNameExtensionFilterを使用すると、この特定のファイルではなく、.defファイルに対して実行できます。

FileNameExtensionFilter fileFilter=new FileNameExtensionFilter(".def", "def"); 
fileChooser.setFileFilter(fileFilter); 
+0

変更 'FileNameExtensionFilterを作成します。 ".def"、 "_SomeFixedFormat.def"); '。 – Aelop

+0

@Aelopいいえ、それは動作しません – user3462473

答えて

2

( "DEF"、 "DEF")、独自のFileFilter

JFileChooser fc = new JFileChooser(); 
fc.setFileFilter(new FileFilter(){ 
    @Override 
    public boolean accept(File file){ 
     // always accept directorys 
     if(file.isDirectory()) 
      return true; 
     // but only files with specific name _SomeFixedFormat.def 
     return file.getName().equals("_SomeFixedFormat.def"); 
    } 
    @Override 
    public String getDescription() { 
     return ".def"; 
    } 
}); 
1

FileNameExtensionFilter(".def", def);FileNameExtensionFilter(".def", "_yourFixedFormat.def");に変更してください。これがうまくいくかどうかはわかりません。そうでない場合は、.defのみに制限し、ファイルを選択するときは、ファイルの名前が書式と同じかどうかを確認し、そうでない場合はJFileChooserを再度開きます。 (FileNameExtensionFilter `へ`;

0

使用

DefFileFilter fileFilter=new DefFileFilter (new String[] {"DEfFile1"}); 
fileChooser.setFileFilter(fileFilter); 

フィルター

package ui.filechooser.filter; 

import java.io.File; 
import javax.swing.filechooser.FileFilter; 
import org.apache.commons.lang.StringUtils; 
import org.apache.commons.io.FilenameUtils; 

/** 
* 
* @author Igor 
*/ 
public class DefFileFilter extends FileFilter { 

    public final static String DEF_EXT = "def"; 
    //def file name example : "DEfFile1", "DefFile2" .... 
    private String[] allowedNames; 

    public DefFileFilter() { 
     this(null); 
    } 

    public DefFileFilter(String names[]) { 
     this.allowedNames = name; 
    } 

    public boolean accept(File f) { 
     if (f.isDirectory()) { 
      return true; 
     } 

     String extension = getExtension(f); 
     if (extension != null) { 
      if (extension.equals(DEF_EXT)) { 
       if(allowedNames != null && !StringUtils.indexOfAny(getBaseName(f.getName), allowedNames)) { 
        return false; 
       } else { 
       return true; 
       } 

      } else { 
       return false; 
      } 
     } 

     return false; 
    } 

    public static String getBaseName(String fileName) { 
     int index = fileName.lastIndexOf('.'); 
     if (index == -1) { 
      return fileName; 
     } else { 
      return fileName.substring(0, index); 
     } 
    } 

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

    public String getDescription() { 
     return "Excel file"; 
    } 
} 
関連する問題