1、基本用法
JFileChooser dlg = new JFileChooser(); dlg.setDialogTitle("Open JPEG file"); int result = dlg.showOpenDialog(this); // 打開"打開文件"對話框 // int result = dlg.showSaveDialog(this); // 打"開保存文件"對話框 if (result == JFileChooser.APPROVE_OPTION) { File file = dlg.getSelectedFile(); ... }
2、自定義FileFilter
JDK沒有提供默認的文件過濾器,但提供了過濾器的抽象超類,我們可以繼承它。
i
mport javax.swing.filechooser.FileFilter; public final class PictureFileFilter extends FileFilter { private String extension; private String description; public PictureFileFilter(String extension, String description) { super(); this.extension = extension; this.description = description; } public boolean accept(File f) { if (f != null) { if (f.isDirectory()) { return true; } String extension = getExtension(f); if (extension != null && extension.equalsIgnoreCase(this.extension)) { return true; } } return false; } public String getDescription() { return description; } private 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; } }
其實主要就是accept(File f)函數。上例中只有一個過濾器,多個過濾器可參考JDK目錄中“demo\jfc\FileChooserDemo\src”中的“ExampleFileFilter.java”
3、多選
在基本用法中,設置
c.setMultiSelectionEnabled(true);
即可實現文件的多選。
讀取選擇的文件時需使用
File[] files = c.getSelectedFiles();
4、選擇目錄
利用這個打開對話框,不僅可以選擇文件,還可以選擇目錄。
其實,對話框有一個FileSelectionMode屬性,其默認值為“JFileChooser.FILES_ONLY”,只需要將其修改為“JFileChooser.DIRECTORIES_ONLY”即可。
JFileChooser c = new JFileChooser(); c.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); c.setDialogTitle("Select path to save"); int result = c.showOpenDialog(PrintDatetime.this); if (result == JFileChooser.APPROVE_OPTION) { String path = c.getSelectedFile().getAbsolutePath()); ... }