Java JFileChooser getSelectedFiles(final JFileChooser chooser)

Here you can find the source of getSelectedFiles(final JFileChooser chooser)

Description

Workaround for Swing bug: JFileChooser does not support multi-file selection See Sun bug database 4218431.

License

Open Source License

Declaration

public static File[] getSelectedFiles(final JFileChooser chooser) 

Method Source Code

//package com.java2s;
/*//from  www.  jav a 2  s.  com
 * The JTS Topology Suite is a collection of Java classes that
 * implement the fundamental operations required to validate a given
 * geo-spatial data set to a known topological specification.
 *
 * Copyright (C) 2001 Vivid Solutions
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 *
 * For more information, contact:
 *
 *     Vivid Solutions
 *     Suite #1A
 *     2328 Government Street
 *     Victoria BC  V8T 5G5
 *     Canada
 *
 *     (250)385-6040
 *     www.vividsolutions.com
 */

import java.awt.Container;

import java.io.File;

import javax.swing.JFileChooser;

import javax.swing.JList;

public class Main {
    /**
     * Workaround for Swing bug: JFileChooser does not support multi-file selection
     * See Sun bug database 4218431.
     * http://manning.spindoczine.com/sbe/files/uts2/Chapter14html/Chapter14.htm)
     */
    public static File[] getSelectedFiles(final JFileChooser chooser) {
        // Although JFileChooser won't give us this information,
        // we need it...
        Container c1 = (Container) chooser.getComponent(3);
        JList list = null;
        while (c1 != null) {
            final Container c = (Container) c1.getComponent(0);
            if (c instanceof JList) {
                list = (JList) c;
                break;
            }
            c1 = c;
        }
        final Object[] entries = list.getSelectedValues();
        final File[] files = new File[entries.length];
        for (int k = 0; k < entries.length; k++) {
            if (entries[k] instanceof File) {
                files[k] = (File) entries[k];
            }
        }
        return files;
    }
}

Related

  1. getOpenFile(String name, String currentDirectory)
  2. getOpenFile(String title)
  3. getPropertiesFile(boolean saving, String startName, String extension, String description)
  4. getSaveAsFile(String defaultName, String currentDirectory, String defaultExtension)
  5. getSaveFile(String message, File defaultFileOrDir, String description, final String... extensions)
  6. getSelectedFiles(JFileChooser chooser)
  7. getSelectedFileWithExtension(JFileChooser c)
  8. getSelectedFileWithExtension(JFileChooser c)
  9. getSystemFile(Component owner, int mode, FileFilter[] filters)