2012-05-25 35 views
2

我正嘗試使用JFileChooser來選擇具有此名稱格式的文件:LS48 * .drv。 同時我想限制用戶只查看一個特定的目錄,如c:\ data。所以我不希望用戶能夠更改目錄或其他驅動器名稱。 基地我下面的代碼段的可以請你提供我一些提示:java jfilechooser僅列出「hello * .txt文件」並且沒有目錄更改

m_fileChooser = new JFileChooser("c:\\data"); // looking for LS48*.drv files 
    m_fileChooser.setFileFilter(new FileNameExtensionFilter("drivers(*.drv, *.DRV)", "drv", "DRV")); 
+0

我從@Boro得到了這個提示,使用此代碼限制用戶只查看特定目錄:http://tips4java.wordpress.com/2009/01/28/single-root-file-chooser/ –

回答

6

您將需要實現FileFilter子自己,而這個設置文件選擇器,而不是FileNameExtensionFilter實例。

而且在這一小類您accept方法將是類似如下:

private static final Pattern LSDRV_PATTERN = Pattern.compile("LS48.*\\.drv"); 
public boolean accept(File f) { 
    if (f.isDirectory()) { 
     return false; 
    } 

    return LSDRV_PATTERN.matcher().matches(f.getName()); 

} 
+0

謝謝爲你的答案。你能檢查出這個問題嗎? http://stackoverflow.com/questions/11041575/using-all-jcombobox-jtextfield-jfilechooser-as-table-editor-overrides-the-re –

4

爲了防止目錄更改使用:

File root = new File("c:\\data"); 
FileSystemView fsv = new SingleRootFileSystemView(root); 
JFileChooser chooser = new JFileChooser(fsv); 

檢查:http://tips4java.wordpress.com/2009/01/28/single-root-file-chooser/

對於文件名稱模式,你可以使用java正則表達式。

+1

這是你指的類是http://tips4java.wordpress。 com/2009/01/28/single-root-file-chooser /如果是這樣,請將其編輯到您的代碼中。 – Boro

+0

謝謝,我剛剛通過coment添加。另外我想知道你是否可以看看這個問題:http://stackoverflow.com/questions/11041575/using-all-jcombobox-jtextfield-jfilechooser-as-table-editor-overrides-the-re –

相關問題