?? filechoosertest.java
字號(hào):
package appsm.view;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import javax.swing.JOptionPane;
public class FileChooserTest {
static String path;
static boolean z;
public static void main(String [] args) {
//首先是創(chuàng)建JFileChooser 對(duì)象,里面帶個(gè)參數(shù),表示默認(rèn)打開的目錄,這里是默認(rèn)打開當(dāng)前文件所在的目錄。
JFileChooser file = new MyChooser (".");
//下面這句是去掉顯示所有文件這個(gè)過濾器。
file.setAcceptAllFileFilterUsed(false);
//添加mdf文件的過濾器
file.addChoosableFileFilter(new ExcelFileFilter("mdf"));
/*使用showOpenDialog()方法,顯示出打開選擇文件的窗口,當(dāng)選擇了某個(gè)文件后,或者關(guān)閉此窗口那么都會(huì)返回一個(gè)
整型數(shù)值,如果返回的是0,代表已經(jīng)選擇了某個(gè)文件。如果返回1代表選擇了取消按鈕或者直接關(guān)閉了窗口*/
int result = file.showOpenDialog(null);
/*JFileChooser.APPROVE_OPTION是個(gè)整型常量,代表0。就是說當(dāng)返回0的值我們才執(zhí)行相關(guān)操作,否則什么也不做。*/
if(result == JFileChooser.APPROVE_OPTION)
{
/*獲得你選擇的文件絕對(duì)路徑。并輸出。當(dāng)然,我們獲得這個(gè)路徑后還可以做很多的事。*/
path = file.getSelectedFile().getAbsolutePath();
//System.out.println(path);
}
else
{
z=false;
}
}
/*因?yàn)槲覀冃枰獎(jiǎng)?chuàng)建一個(gè)文件的過濾器,以便讓文件對(duì)話框顯示我們指定的文件。這里我們就以Excel文件和exe文件舉例。
那么要做到這點(diǎn)我們就需要重寫FileFilter 類的accept來設(shè)置相關(guān)的過濾器。這個(gè)繼承類你可以寫成外部類、內(nèi)部類甚至是
匿名內(nèi)部類。我這里寫成了一個(gè)內(nèi)部類的形式。因?yàn)槭窃趍ain方法使用他,因此這個(gè)類也要定義成 靜態(tài)的。 */
private static class ExcelFileFilter extends FileFilter {
String ext;
//構(gòu)造方法的參數(shù)是我們需要過濾的文件類型。比如excel文件就是 xls,exe文件是exe.
ExcelFileFilter(String ext) {
this.ext = ext;
}
/*這個(gè)方法就是重寫 FileFilter 類的方法,參數(shù)是File對(duì)象,一般這個(gè)參數(shù)是如何傳入的我們可以不用關(guān)心。他返回一個(gè)布爾型。如果為真表示該文件符合過濾設(shè)置,那么就會(huì)顯示在當(dāng)前目錄下,如果為假就會(huì)被過濾掉。 */
public boolean accept(File file) {
//首先判斷該目錄下的某個(gè)文件是否是目錄,如果是目錄則返回true,即可以顯示在目錄下。
if (file.isDirectory())
{
return true;
}
/*獲得某個(gè)文件的文件名,然后使用lastIndexOf()來獲得這個(gè)文件名字符串中'.'這個(gè)字符最后一次出現(xiàn)的位置。并且通過它返回的一個(gè)整型來判斷該文件是否符合*.*這中文件+文件名的格式,如果不符合那么就不顯示這個(gè)文件。如果符合,那么就將'.'字符后面的字符串提取出來與過濾的文件名相比較,如果相等則符合該文件格式,并顯示出來。如果不相等那么就將其過濾掉。*/
String fileName = file.getName();
int index = fileName.lastIndexOf('.');
if (index > 0 && index < fileName.length() - 1)
{
String extension = fileName.substring(index + 1).toLowerCase();
if (extension.equals(ext))
return true;
}
return false;
}
/*這個(gè)方法也是重寫FileFilter的方法,作用是在過濾名那里顯示出相關(guān)的信息。這個(gè)與我們過濾的文件類型想匹配,通過這些信息,可以讓用戶更清晰的明白需要過濾什么類型的文件。*/
public String getDescription() {
if (ext.equals("mdf"))
{
return "SQL Server文件(*.mdf)";
}
return "";
}
}
private static class MyChooser extends JFileChooser {
MyChooser(String path) {
super(path);
}
/**
* 重載JFileChooser的方法,當(dāng)在文件選擇對(duì)話框中,并在當(dāng)前
* 目錄下沒有找到輸入的文件,則對(duì)話框不會(huì)關(guān)閉。直到選擇的文件 在當(dāng)前選擇的目錄下,才關(guān)閉對(duì)話框,并執(zhí)行后面的操作。
*/
public void approveSelection() {
File file = getSelectedFile();
if (file.exists())
super.approveSelection();
else
JOptionPane.showMessageDialog(null, "你選擇的文件不存在,請(qǐng)重新選擇!");
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -