JFileChooser:ExampleFileFilter.java 類檔案
[url]http://whisperlin.blog.163.com/blog/static/605237102008310113243310/[/url]
今天在寫開啟檔案對話方塊的程式碼時,想對檔案型別進行限制,在JDK幫助文件中,提供瞭如下方法:
在其中用到ExampleFileFilter這個類,繼承了FileFilter這個介面,它放在j2sdk1.4.2_16\demo\jfc\FileChooserDemo\src 中,我用的是jdk1.6版本,偏偏沒有這個檔案,鬱悶了半天,無奈裝了遍j1.4,現在問題解決了,將程式碼提取出來如下:
今天在寫開啟檔案對話方塊的程式碼時,想對檔案型別進行限制,在JDK幫助文件中,提供瞭如下方法:
JFileChooser chooser = new JFileChooser();
// Note: source for ExampleFileFilter can be found in FileChooserDemo,
// under the demo/jfc directory in the JDK.
ExampleFileFilter filter = new ExampleFileFilter();
filter.addExtension("jpg");
filter.addExtension("gif");
filter.setDescription("JPG & GIF Images");
chooser.setFileFilter(filter);
int returnVal = chooser.showOpenDialog(parent);
if(returnVal == JFileChooser.APPROVE_OPTION) {
System.out.println("You chose to open this file: " +
chooser.getSelectedFile().getName());
}
在其中用到ExampleFileFilter這個類,繼承了FileFilter這個介面,它放在j2sdk1.4.2_16\demo\jfc\FileChooserDemo\src 中,我用的是jdk1.6版本,偏偏沒有這個檔案,鬱悶了半天,無奈裝了遍j1.4,現在問題解決了,將程式碼提取出來如下:
import java.io.File;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.swing.*;
import javax.swing.filechooser.*;
public class ExampleFileFilter extends FileFilter {
private static String TYPE_UNKNOWN = "Type Unknown";
private static String HIDDEN_FILE = "Hidden File";
private Hashtable filters = null;
private String description = null;
private String fullDescription = null;
private boolean useExtensionsInDescription = true;
public ExampleFileFilter() {
this.filters = new Hashtable();
}
public ExampleFileFilter(String extension) {
this(extension,null);
}
public ExampleFileFilter(String extension, String description) {
this();
if(extension!=null) addExtension(extension);
if(description!=null) setDescription(description);
}
public ExampleFileFilter(String[] filters) {
this(filters, null);
}
public ExampleFileFilter(String[] filters, String description) {
this();
for (int i = 0; i < filters.length; i++) {
// add filters one by one
addExtension(filters[i]);
}
if(description!=null) setDescription(description);
}
public boolean accept(File f) {
if(f != null) {
if(f.isDirectory()) {
return true;
}
String extension = getExtension(f);
if(extension != null && filters.get(getExtension(f)) != null) {
return true;
};
}
return false;
}
public String getExtension(File f) {
if(f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
};
}
return null;
}
public void addExtension(String extension) {
if(filters == null) {
filters = new Hashtable(5);
}
filters.put(extension.toLowerCase(), this);
fullDescription = null;
}
public String getDescription() {
if(fullDescription == null) {
if(description == null || isExtensionListInDescription()) {
fullDescription = description==null ? "(" : description + " (";
// build the description from the extension list
Enumeration extensions = filters.keys();
if(extensions != null) {
fullDescription += "." + (String) extensions.nextElement();
while (extensions.hasMoreElements()) {
fullDescription += ", ." + (String) extensions.nextElement();
}
}
fullDescription += ")";
} else {
fullDescription = description;
}
}
return fullDescription;
}
public void setDescription(String description) {
this.description = description;
fullDescription = null;
}
public void setExtensionListInDescription(boolean b) {
useExtensionsInDescription = b;
fullDescription = null;
}
public boolean isExtensionListInDescription() {
return useExtensionsInDescription;
}
}
相關文章
- Java —— 檔案類(File 類)Java
- 檔案助手類
- 類檔案結構_class類檔案的的結構
- dedecms主要類檔案
- 檔案操作類FileUtil
- Java : File 檔案類操作Java
- Class類檔案結構
- list集合、txt檔案對比的工具類和檔案讀寫工具類
- Java™ 教程(管理原始檔和類檔案)Java
- Java的特殊類用法:檔案類、內部類、本地類、匿名類Java
- 【JVM】深入解析class類檔案JVM
- java 檔案處理 工具類Java
- C# 檔案IO常用類C#
- c++ IO類,檔案操作C++
- JAVA Class類檔案結構Java
- 一個CSV檔案解析類
- vbs類生成xml檔案(轉)XML
- 什麼是檔案包含漏洞?檔案包含漏洞分類!
- 【/proc/檔案淺析】另類辦法恢復資料檔案和控制檔案
- 用php生成HTML檔案的類PHPHTML
- ServletFileUpload類上傳檔案Servlet
- JAVA類檔案操作和異常Java
- mach-o 檔案分析(解析類)Mac
- 深入理解JVM類檔案格式JVM
- Java壓縮檔案生成工具類Java
- 檔案同步類SimFileSync.class.phpPHP
- 各類檔案管理函式 (轉)函式
- Linux中的檔案種類Linux
- ELF檔案的四種分類
- Java 對 properties 檔案操作 (ResourceBundle 類和 Properties 類)Java
- Android工具類之檔案操作工具類Android
- Android掃描檔案並統計各類檔案數目Android
- 自動生成檔案層級樹類
- 深入解析Class類檔案的結構
- JVM學習--Class類檔案結構JVM
- Eclipse 無法載入類檔案Eclipse
- 如何同時複製、分類檔案
- java 上傳 下載檔案工具類Java