JFileChooser filters

user1832583 picture user1832583 · Nov 22, 2012 · Viewed 45.5k times · Source

I am putting a JFileChooser in my program, but that only takes images. So I decided to add filters:

Code

import javax.swing.*;

public class fileChooser {

 public static void main(String[] args) {
    JPanel panel = new JPanel();
    
    final JFileChooser fc = new JFileChooser();
    int file = fc.showOpenDialog(panel);
    fc.addChoosableFileFilter(new ImageFilter());
    fc.setAcceptAllFileFilterUsed(false);
 }
}

I got that straight from the Java tutorials. But Eclipse underlines the following as an error:

fc.addChoosableFileFilter(new ImageFilter());
fc.setAcceptAllFileFilterUsed(false);

Any suggestions?

Answer

Andrew Thompson picture Andrew Thompson · Nov 23, 2012

I am putting a JFileChooser in my program, but that only takes images.

For a list of types supported by that JRE on that OS, use ImageIO.

FileFilter imageFilter = new FileNameExtensionFilter(
    "Image files", ImageIO.getReaderFileSuffixes());

Types seen - Java 1.6/Windows 7

bmp
jpg
jpeg
wbmp
png
gif

Note: don't hard-code that list! It might change from version to version, and OS to OS. E.G.

  1. I am not surprised that Windows has support to load BMP, but does that come up in a Mac?
  2. Seeing WBMP alerted me to the existence of such a format!

That list would have many more formats if was installed.

Filter as it appears in a chooser

Image Chooser