Java tutorial
/* Java Swing, 2nd Edition By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole ISBN: 0-596-00408-7 Publisher: O'Reilly */ // MyFilterChooser.java //Just a simple example to see what it takes to make one of these filters work. // import java.awt.Container; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.filechooser.FileFilter; public class MyFilterChooser extends JFrame { public MyFilterChooser() { super("Filter Test Frame"); setSize(350, 200); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout()); JButton openButton = new JButton("Open"); final JLabel statusbar = new JLabel("Output of your selection will go here"); openButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { String[] pics = new String[] { "gif", "jpg", "tif" }; String[] audios = new String[] { "au", "aiff", "wav" }; JFileChooser chooser = new JFileChooser(); chooser.addChoosableFileFilter(new SimpleFileFilter(pics, "Images (*.gif, *.jpg, *.tif)")); chooser.addChoosableFileFilter(new SimpleFileFilter(".MOV")); chooser.addChoosableFileFilter(new SimpleFileFilter(audios, "Sounds (*.aiff, *.au, *.wav)")); int option = chooser.showOpenDialog(MyFilterChooser.this); if (option == JFileChooser.APPROVE_OPTION) { if (chooser.getSelectedFile() != null) statusbar.setText("You chose " + chooser.getSelectedFile().getName()); } else { statusbar.setText("You canceled."); } } }); c.add(openButton); c.add(statusbar); setVisible(true); } public static void main(String args[]) { MyFilterChooser mfc = new MyFilterChooser(); } } //SimpleFileFilter.java //A straightforward extension-based example of a file filter. This should be //replaced by a "first class" Swing class in a later release of Swing. // class SimpleFileFilter extends FileFilter { String[] extensions; String description; public SimpleFileFilter(String ext) { this(new String[] { ext }, null); } public SimpleFileFilter(String[] exts, String descr) { // Clone and lowercase the extensions extensions = new String[exts.length]; for (int i = exts.length - 1; i >= 0; i--) { extensions[i] = exts[i].toLowerCase(); } // Make sure we have a valid (if simplistic) description description = (descr == null ? exts[0] + " files" : descr); } public boolean accept(File f) { // We always allow directories, regardless of their extension if (f.isDirectory()) { return true; } // Ok, it's a regular file, so check the extension String name = f.getName().toLowerCase(); for (int i = extensions.length - 1; i >= 0; i--) { if (name.endsWith(extensions[i])) { return true; } } return false; } public String getDescription() { return description; } }