package filefilters; import java.io.File; import javax.swing.JFileChooser; public class FileChooserDemoApp { /** * @param args */ public static void main(String[] args) { new FileChooserDemoApp().init(); } // displays the JFileChooser dialog private void init() { JFileChooser jfc = new JFileChooser(); // starts in default directory // JFileChooser jfc = new JFileChooser("."); // starts in working folder (project folder) jfc.setDialogTitle("Please select a file"); // jfc.setFileFilter( new CustomFilter(".txt") ); int status; status = jfc.showDialog(null, "Press me!"); // "generic" dialog with customizable "approve" button // status = jfc.showOpenDialog(null); // has an "open" button // status = jfc.showSaveDialog(null); // has a "save" button if( status == JFileChooser.APPROVE_OPTION ) { // "Open" button was pressed File selected = jfc.getSelectedFile(); String filename = selected.getName(); System.out.println(filename + " was selected."); } else { // Cancel was pressed System.exit(0); } } /** * Custom FileFilter * used by JFileChooser to select specific files */ private class CustomFilter extends javax.swing.filechooser.FileFilter { private String extensionFilter; // file extension specifier // constructor // @param extension - the file type to filter public CustomFilter( String extension ) { extensionFilter = extension; //TODO: add exception handling to catch invalid extensions.... } @Override /* * sets what files are accepted */ public boolean accept(File file) { if( file.isDirectory() ) // directory return true; if( file.getName().toLowerCase().endsWith(extensionFilter) ) // text file return true; return false; } @Override /* * the label of the filter */ public String getDescription(){ return extensionFilter + " files"; } } }