1. 程式人生 > >JFileChooser多檔案選擇

JFileChooser多檔案選擇

在java中有兩種方式呼叫檔案對話方塊

(1)一種是AWT中的FileDialog類,通過FileDialog類建立一個物件,該物件即是所需要的對話方塊,

例如,FileDialog dialog=new FileDialog(new Frame(),"選擇存放位置",FileDialog.LOAD);


這一行程式碼使用了FileDialog類的其中一個建構函式

       ----------  建立一個具有指定標題的檔案對話方塊視窗,用於載入或儲存檔案。

其中最難懂的就是int mode,這是檔案對話方塊的模式選擇,有兩個欄位,如下所示:

欄位摘要
static intLOAD
          此常量值指示檔案對話方塊視窗的作用是查詢要讀取的檔案。
static intSAVE
          此常量值指示檔案對話方塊視窗的作用是查詢要寫入的檔案。

最後再通過呼叫dialog.setVisible(true)方法來使對話方塊顯示到使用者面前,由於它是一個模式對話方塊,當應用程式呼叫其setVisible(true)方法來顯示對話方塊時,它將阻塞其餘應用程式,直到使用者選擇一個檔案。

這是簡單的一個對話方塊操作,但如果說要需要更加多的操作(例如多檔案選擇,可以同時選擇檔案和資料夾)的話,這就要使用到swing中的JFileChooser類了,

(2)下面來講通過swing當中的JFileChooser類來建立對話方塊

JFileChooser的功能與AWT中的FileDialog基本相似,也是用於生成“開啟檔案”,“儲存檔案”的對話方塊,與FileDoalog不同的是,JFileChooser無須依賴於本地平臺的GUI,它由100%純java實現,在所有平臺上具有完全相同的行為,並可以在所有平臺上具有相同的外觀風格。

JFileChooser並不是JDialog的子類(API文件中截圖如上所示),所以不能使用setVisible(true)來顯示該檔案對話方塊,而是呼叫

showXxxDialog()方法來顯示檔案對話方塊

構造方法:

 
          使用給定的當前目錄和 FileSystemView 構造一個 JFileChooser

currentDirectory:指定所建立檔案對話方塊的當前路徑,該引數既可以是一個string型別的路徑,也可以是一個File物件所代表的的路徑;

FileSystemView :用於指定基本該檔案系統外觀來建立檔案對話方塊,如果沒有指定該引數,預設以當前檔案系統外觀建立檔案對話方塊。

使用JFileChooser來建立一個檔案對話方塊並允許使用者選擇檔案的步驟如下:

(1)採用構造器建立一個JFileChooser物件,該JFileChooser物件無須指定parent元件,這意味著可以在多個視窗中共用該JFileChooser物件,建立JFileChooser物件時可以初始化路徑

例如:

   //以當前路徑建立檔案選擇器

   JFileChooser addChooser=new JFileChooser(".");

(2)呼叫JFileChooser的系列可選方法對JFileChooser執行初始化操作,下面我講解一些最常用而且使用的方法:

      setMultiSelectionEnabled(true):預設情況下,該檔案選擇器只能選擇一個檔案,通過該方法可以設定允許選擇多個檔案(設定引數為true即可)

      setFileSelectionMode(int mode):預設情況下,該檔案選擇器只能選擇一個檔案,通過呼叫該方法可以設定允許選擇檔案,選擇路徑,檔案與路徑。
               /  * 設定 JFileChooser,以允許使用者只選擇檔案、只選擇目錄,或者可選擇檔案和目錄。預設值是 JFilesChooser.FILES_ONLY。

                     引數:
                     mode - 要顯示的檔案型別: 
                  JFileChooser.FILES_ONLY 
                  JFileChooser.DIRECTORIES_ONLY 
                  JFileChooser.FILES_AND_DIRECTORIES 

                 */

例如
                addChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);


如上圖所示,該檔案對話方塊可同時實現檔案與資料夾選擇和多項同時選中,程式碼如下:

JFileChooser addChooser=new JFileChooser();

                addChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
                //該方法設定為true允許選擇多個檔案
                addChooser.setMultiSelectionEnabled(true);
                int returnval=addChooser.showOpenDialog(jf);  
                if(returnval==JFileChooser.APPROVE_OPTION)
                {
                    File[] files=addChooser.getSelectedFiles();
                    String str="";
                    for (File file : files) {
                        af.add(file);
                        if(file.isDirectory())
                            str=file.getPath();
                        else{
                          str=file.getPath()+file.getName();
                        }
                        jta.append(str+"\n");
                        
                    }

                }
                
            }

(3)呼叫showXxxDialog()方法來開啟檔案對話方塊,通常有如下三種方法:

int  showDialog(Component parent,String approveButtonText):彈出檔案對話方塊,該對話方塊的標題、”同意“按鈕的文字(預設是”儲存“或”取消“按鈕)由approveButtonText來指定,這就可以自己定義那個按鈕的文字在需要的時候

例如:

                JFileChooser chooser=new JFileChooser();
                chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);

                int returnval=chooser.showDialog(jf, "選擇資料夾");
                if(returnval==JFileChooser.APPROVE_OPTION)
                {
                    String str=chooser.getSelectedFile().getPath();
                    targetfoleder.setText(str);
                }

int showOpenDialog(Component parent):彈出檔案對話方塊,該對話方塊具有預設標題,”同意“按鈕的文字是”開啟“

int showSaveDialog(Component parent):彈出檔案對話方塊,該對話方塊具有預設標題,”同意“按鈕的文字是”儲存“

總結了一些,希望對有所困惑的朋友有點幫助~