Here you can find the source of getFile(String message, boolean isLoadNotSave, File defaultFileOrDir, boolean allowMultipleSelection, String description, final String... extensions)
public static File[] getFile(String message, boolean isLoadNotSave, File defaultFileOrDir, boolean allowMultipleSelection, String description, final String... extensions)
//package com.java2s; //License from project: LGPL import java.io.File; import java.io.FilenameFilter; import javax.swing.JFileChooser; import javax.swing.filechooser.FileNameExtensionFilter; public class Main { public static File[] getFile(String message, boolean isLoadNotSave, File defaultFileOrDir, boolean allowMultipleSelection, String description, final String... extensions) { if (isMac()) { java.awt.Frame frame = new java.awt.Frame(); java.awt.FileDialog chooser = new java.awt.FileDialog(frame, message, (isLoadNotSave ? java.awt.FileDialog.LOAD : java.awt.FileDialog.SAVE)); if (defaultFileOrDir != null) { if (defaultFileOrDir.isDirectory()) { chooser.setDirectory(defaultFileOrDir.getAbsolutePath()); } else { chooser.setDirectory(defaultFileOrDir.getParentFile().getAbsolutePath()); chooser.setFile(defaultFileOrDir.getName()); }//from ww w .j a va 2 s . c o m } if (description != null) { FilenameFilter filter = new FilenameFilter() { @Override public boolean accept(File dir, String name) { for (int i = 0; i < extensions.length; i++) { if (name.toLowerCase().endsWith(extensions[i].toLowerCase())) { return true; } } return false; } }; chooser.setFilenameFilter(filter); } chooser.setMultipleMode(allowMultipleSelection); chooser.setVisible(true); if (chooser.getFile() == null) return null; if (allowMultipleSelection) { return chooser.getFiles(); } File file = new java.io.File(chooser.getDirectory(), chooser.getFile()); chooser.dispose(); frame.dispose(); return new File[] { file }; } else { // No file name in the arguments so throw up a dialog box... java.awt.Frame frame = new java.awt.Frame(); frame.setTitle(message); final JFileChooser chooser = new JFileChooser(defaultFileOrDir); chooser.setMultiSelectionEnabled(allowMultipleSelection); //chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); if (description != null && extensions.length > 1 && extensions[0].length() > 0) { FileNameExtensionFilter filter = new FileNameExtensionFilter(description, extensions); chooser.setFileFilter(filter); } if (isLoadNotSave) { if (chooser.showOpenDialog(frame) == JFileChooser.APPROVE_OPTION) { frame.dispose(); if (allowMultipleSelection) { return chooser.getSelectedFiles(); } else { if (chooser.getSelectedFile() == null) { return null; } return new File[] { chooser.getSelectedFile() }; } } } else { if (chooser.showSaveDialog(frame) == JFileChooser.APPROVE_OPTION) { frame.dispose(); if (allowMultipleSelection) { return chooser.getSelectedFiles(); } else { if (chooser.getSelectedFile() == null) { return null; } return new File[] { chooser.getSelectedFile() }; } } } } return null; } public static boolean isMac() { return System.getProperty("os.name").toLowerCase().startsWith("mac"); } }