JFileChooser基本使用方法_第1頁(yè)
JFileChooser基本使用方法_第2頁(yè)
JFileChooser基本使用方法_第3頁(yè)
JFileChooser基本使用方法_第4頁(yè)
JFileChooser基本使用方法_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

!-分類:Java學(xué)習(xí)筆記JFileChooser()構(gòu)造一個(gè)指向用戶默認(rèn)目錄的JFileChooser。謝謝閱讀JFileChooser(File currentDirectory)謝謝閱讀使用給定的File作為路徑來構(gòu)造一個(gè)JFileChooser。謝謝閱讀setFileSelectionMode(int mode)精品文檔放心下載設(shè)置JFileChooser,以允許用戶只選擇文件、只選擇目錄,或者可選擇文感謝閱讀件和目錄。mode參數(shù):FILES_AND_DIRECTORIES 指示顯示文件和目錄。感謝閱讀FILES_ONLY 指示僅顯示文件。DIRECTORIES_ONLY 指示僅顯示目錄。showDialog(Component parent,String approveButtonText)精品文檔放心下載彈出具有自定義approve按鈕的自定義文件選擇器對(duì)話框。精品文檔放心下載showOpenDialog(Component parent)精品文檔放心下載彈出一個(gè)"OpenFile"文件選擇器對(duì)話框。精品文檔放心下載showSaveDialog(Component parent)精品文檔放心下載彈出一個(gè)"SaveFile"文件選擇器對(duì)話框。謝謝閱讀setMultiSelectionEnabled(boolean b)精品文檔放心下載設(shè)置文件選擇器,以允許選擇多個(gè)文件。getSelectedFiles()如果將文件選擇器設(shè)置為允許選擇多個(gè)文件,則返回選中文件的列表(File[])。感謝閱讀getSelectedFile()返回選中的文件。!-packagecom.liang;importjava.awt.event.ActionEvent;精品文檔放心下載importjava.awt.event.ActionListener;謝謝閱讀importjava.io.File;importjavax.swing.JButton;精品文檔放心下載importjavax.swing.JFileChooser;精品文檔放心下載importjavax.swing.JFrame;感謝閱讀importjavax.swing.JLabel;謝謝閱讀publicclassFileChooserextendsJFrameimplementsActionListener{JButtonopen=null;謝謝閱讀publicstaticvoidmain(String[]args){謝謝閱讀newFileChooser();}publicFileChooser(){open=newJButton("open");this.add(open);this.setBounds(400,200,100,100);精品文檔放心下載this.setVisible(true);!-this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);精品文檔放心下載open.addActionListener(this);感謝閱讀}@OverridepublicvoidactionPerformed(ActionEvente){感謝閱讀//TODOAuto-generatedmethodstub精品文檔放心下載JFileChooserjfc=newJFileChooser();精品文檔放心下載jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);感謝閱讀jfc.showDialog(newJLabel(),"選擇");謝謝閱讀Filefile=jfc.getSelectedFile();感謝閱讀if(file.isDirectory()){System.out.println("文件夾:"+file.getAbsolutePath());謝謝閱讀}elseif(file.isFile()){System.out.println("文件:"+file.getAbsolutePath());謝謝閱讀}System.out.println(jfc.getSelectedFile().getName());精品文檔放心下載}}JFileChooser效果圖如下:!-其實(shí)JFileChooser基本使用方法還是很簡(jiǎn)單的,下面寫兩個(gè)示例看了就明白了,如果還要謝謝閱讀增加一些功能,我們還可以添加過濾器,只顯示過濾后的文件。還可以再保存的時(shí)候,如果感謝閱讀保存的是目錄里已經(jīng)存在的文件,那么對(duì)話框不會(huì)關(guān)閉,并且彈出一個(gè)JOptionPane提示謝謝閱讀用戶是否保存文件。打開文件對(duì)話框:importjava.io.File;importjavax.swing.JFileChooser;謝謝閱讀importjavax.swing.filechooser.FileFilter;謝謝閱讀publicclassFileChooserTest{謝謝閱讀!-publicstaticvoidmain(String[]args){精品文檔放心下載//首先是創(chuàng)建JFileChooser對(duì)象,里面帶個(gè)參數(shù),表示默認(rèn)打開的目錄,這里是默認(rèn)打開謝謝閱讀當(dāng)前文件所在的目錄。JFileChooserfile=newJFileChooser(".");謝謝閱讀//下面這句是去掉顯示所有文件這個(gè)過濾器。file.setAcceptAllFileFilterUsed(false);感謝閱讀//添加excel文件的過濾器file.addChoosableFileFilter(newExcelFileFilter("xls"));謝謝閱讀//添加exe文件的過濾器file.addChoosableFileFilter(newExcelFileFilter("exe"));精品文檔放心下載/*使用showOpenDialog()方法,顯示出打開選擇文件的窗口,當(dāng)選擇了某個(gè)文件后,或者關(guān)閉此窗口那么都會(huì)返回一個(gè)謝謝閱讀整型數(shù)值,如果返回的是0,代表已經(jīng)選擇了某個(gè)文件。如果返回1代表選擇了取消按鈕或者直接關(guān)閉了窗口*/謝謝閱讀intresult=file.showOpenDialog(null);精品文檔放心下載/*JFileChooser.APPROVE_OPTION是個(gè)整型常量,代表0。就是說當(dāng)返回0的值我們才謝謝閱讀執(zhí)行相關(guān)操作,否則什么也不做。if(result==JFileChooser.APPROVE_OPTION)感謝閱讀{/*獲得你選擇的文件絕對(duì)路徑。并輸出。當(dāng)然,我們獲得這個(gè)路徑后還可以做很多的事。感謝閱讀Stringpath=file.getSelectedFile().getAbsolutePath();System.out.println(path);精品文檔放心下載}else{System.out.println("你已取消并關(guān)閉了窗口!");謝謝閱讀}}/*因?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)的。謝謝閱讀privatestaticclassExcelFileFilterextendsFileFilter{感謝閱讀!-Stringext;//構(gòu)造方法的參數(shù)是我們需要過濾的文件類型。比如excel文件就是xls,exe文件是exe.謝謝閱讀ExcelFileFilter(Stringext){感謝閱讀this.ext=ext;}/*這個(gè)方法就是重寫FileFilter類的方法,參數(shù)是File對(duì)象,一般這個(gè)參數(shù)是如何傳入的我們可以不用關(guān)心。他返回一個(gè)布爾型。如果為真表示該文件符合過濾設(shè)置,那么就會(huì)顯示在當(dāng)前目錄下,如果為假就會(huì)被過濾掉。謝謝閱讀publicbooleanaccept(Filefile){精品文檔放心下載//首先判斷該目錄下的某個(gè)文件是否是目錄,如果是目錄則返回true,即可以顯示在目錄下。謝謝閱讀if(file.isDirectory()){returntrue;}//獲得某個(gè)文件的文件名,然后使用lastIndexOf()來獲得這個(gè)文件名字符串中'.'這個(gè)字符最后一次出現(xiàn)的位置。并且通過它返回的一個(gè)整型來判斷該文件是否符合*.*這中文件+文件名的格式,如果不符合那么就不顯示這個(gè)文件。如果符合,那么就將'.'字符后面的字符串提取出來與過濾的文件名相比較,如果相等則符合該文件格式,并顯示出來。如果不相等那么就將其過濾掉。*/謝謝閱讀StringfileName=file.getName();謝謝閱讀intindex=fileName.lastIndexOf('.');感謝閱讀if(index>0&&index<fileName.length()-1)精品文檔放心下載{Stringextension=fileName.substring(index+1).toLowerCase();精品文檔放心下載if(extension.equals(ext))精品文檔放心下載returntrue;}returnfalse;}/*這個(gè)方法也是重寫FileFilter的方法,作用是在過濾名那里顯示出相關(guān)的信息。這個(gè)與我們謝謝閱讀過濾的文件類型想匹配,通過這些信息,可以讓用戶更清晰的明白需要過濾什么類型的文件。謝謝閱讀*/publicStringgetDescription(){謝謝閱讀if(ext.equals("xls")){!-return"MicrosoftExcel文件(*.xls)";感謝閱讀}if(ext.equals("exe")){return"可執(zhí)行文件(*.exe)";}return"";}}}打開選擇文件的對(duì)話框就建立好了。但是上面的程序還有瑕疵。因?yàn)橹挥挟?dāng)用戶點(diǎn)取消或關(guān)閉該窗口時(shí)才不會(huì)執(zhí)行任何操作。而如果用戶在對(duì)話框里輸入的文件在當(dāng)前目錄中不存在時(shí),那么窗口依然會(huì)關(guān)閉,這時(shí)可能就需要在程序中再來做判斷。那么可不可以在當(dāng)用戶輸入錯(cuò)誤的文件名后,窗口不會(huì)關(guān)閉,而是不執(zhí)行任何操作或者彈出個(gè)對(duì)話框提示用戶,可以看看大多數(shù)window程序中的選擇對(duì)話框都是這么做的,其實(shí)要實(shí)現(xiàn)這個(gè)功能也不難,只需要再重寫一下JFileChooser類的approveSelection()方法就行了。精品文檔放心下載我們將上面的程序做下修改,首先還是需要?jiǎng)?chuàng)建一個(gè)繼承于JFileChooser的類,這個(gè)類可以寫成外部或者內(nèi)部類,我們這里依然寫為內(nèi)部類,注意,如果需要在靜態(tài)方法中調(diào)用它,則需要將它設(shè)置為靜態(tài)的。感謝閱讀privatestaticclassMyChooserextendsJFileChooser{謝謝閱讀MyChooser(Stringpath){super(path);}/**重載JFileChooser的方法,當(dāng)在文件選擇對(duì)話框中,并在當(dāng)前精品文檔放心下載目錄下沒有找到輸入的文件,則對(duì)話框不會(huì)關(guān)閉。直到選擇的文件在當(dāng)前選擇的目錄下,才關(guān)閉對(duì)話框,并執(zhí)行后面的操作。謝謝閱讀*/publicvoidapproveSelection(){感謝閱讀Filefile=newFile(getSelectedFile().getPath());謝謝閱讀if(file.exists())super.approveSelection();elseJOptionPane.showMessageDialog(null,"你選擇的文件不存在,請(qǐng)重新選擇!");謝謝閱讀}!-把上面這段代碼添加進(jìn)剛才的類里面,然后把JFileChooserfile=newJFileChooser(".");改成精品文檔放心下載JFileChooserfile=newMyChooser(".");精品文檔放心下載好了,現(xiàn)在我們就可以在不關(guān)閉該對(duì)話框的情況下判斷用戶的輸入是否錯(cuò)誤了。還可以加入感謝閱讀正則表達(dá)式,判斷用戶輸入是否符合規(guī)定,操作方式按照這個(gè)框架來寫就沒問題了。這里不謝謝閱讀再贅述。下面是保存對(duì)話框!保存對(duì)話框:其實(shí)保存對(duì)話框和打開文件對(duì)話框在使用上沒什么區(qū)別,他們都是使用同一個(gè)類JFileChooser,因?yàn)樵趕wing當(dāng)中打開和保存對(duì)話框不會(huì)做出任何對(duì)文件進(jìn)行處理的功能,所有的這些功能需要我們自己去實(shí)現(xiàn),而僅僅是提供了1個(gè)這樣的窗口模型而已。因此這兩種窗口其實(shí)只是將按鈕的標(biāo)簽進(jìn)行了替換而已。創(chuàng)建他們唯一的區(qū)別就是打開是調(diào)用showOpenDialog()方法,保存則是調(diào)用showSaveDialog(),創(chuàng)建形式幾乎一樣。我們?cè)谑垢兄x閱讀用他們的時(shí)候就需要分別對(duì)這兩種窗口的返回后進(jìn)行不同的處理,設(shè)置過濾器是一樣的,因此過濾器我們就復(fù)用上面打開文件窗口的方法,但是在判斷輸入保存文件是否在當(dāng)前目錄下時(shí),我們需要做出不一樣的處理。當(dāng)用戶輸入了與當(dāng)前目錄相同的文件名后,要彈出對(duì)話框詢問用戶是否需要覆蓋原文件,如果用戶選擇否,那么返回保存文件的對(duì)話框允許用戶繼續(xù)選擇或者輸入保存的文件名。謝謝閱讀下面我只需要修改上面代碼的兩個(gè)地方就能夠達(dá)到目的。首先將修改一下MyChooser這個(gè)感謝閱讀類privatestaticclassMyChooserextendsJFileChooser{謝謝閱讀MyChooser(Stringpath){super(path);}/*同樣是覆蓋approveSelection方法,首先獲得輸入文件的路徑,然后判斷其是否在當(dāng)前目錄下,如果存在,那么彈出對(duì)話框詢問是否需要覆蓋當(dāng)前文件,如果選擇取消,則回到保存對(duì)話框

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論