14
private void openMenuActionPerformed(java.awt.event.ActionEvent evt) {
    
    DBmanager db = new DBmanager();
    if (!db.getCurrentUser().equals("Admin")) {
        JOptionPane.showMessageDialog(this, "You are Not Allowed to Run Applications");
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("MS Office Documents", "docx", "xlsx", "pptx"));
        fileChooser.addChoosableFileFilter(new FileNameExtensionFilter("Images", "jpg", "png", "gif", "bmp"));
        fileChooser.setAcceptAllFileFilterUsed(false);
        int returnVal = fileChooser.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();

            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    } else if (db.getCurrentUser().equals("Admin")) {
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setAcceptAllFileFilterUsed(true);
        int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            if (Desktop.isDesktopSupported()) {
                try {
                    Desktop.getDesktop().open(file);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }// TODO add your handling code here:
}

I am trying to filter files in a file filter by setting fileChooser.setAcceptAllFileFilterUsed(false);. The "all files" option disappears from the FileChooser but all files remain visible unless you select an option from PDF documents,ms Office or images. I want to have only my 3 custom filters upon opening the file chooser.

peterh
  • 11,875
  • 18
  • 85
  • 108
Julius Gitonga
  • 311
  • 1
  • 2
  • 15
  • 1
    Use `setFileFilter(FileFilter filter)` to set a default filter when it loads. – BlackBox Sep 02 '13 at 14:44
  • Have you gone through the [file chooser tutorial](http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)? It explains use of file filter as well as `FileView`.. BTW - For better help sooner, post an [SSCCE](http://sscce.org/). – Andrew Thompson Sep 02 '13 at 14:48
  • Thanks.....adding default filter worked fileChooser.setFileFilter(new FileNameExtensionFilter("PDF Documents", "pdf")); – Julius Gitonga Sep 02 '13 at 14:57

4 Answers4

19

For example, if you want to filter your JFileChooser to strictly display most commonly found image files, you would use something like this:

FileNameExtensionFilter filter = new FileNameExtensionFilter("Image Files", "jpg", "png", "gif", "jpeg");
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(filter);

The first argument is the description (what gets displayed upon selection at the bottom) and the second argument are the informal file extensions.

Josh M
  • 11,611
  • 7
  • 39
  • 49
2

You can use FileNameExtensionFilter to add allowed extensions to your FileChooser dialog. Here's an example:

JFileChooser chooser = new JFileChooser();
FileNameExtensionFilter filter = new FileNameExtensionFilter(
    "JPG & GIF Images", "jpg", "gif");
chooser.setFileFilter(filter);

For more info, please refer to the Javadocs: FileNameExtensionFilter

Grodriguez
  • 21,501
  • 10
  • 63
  • 107
0

In my case, I had to put the

setFileFilter(          
    new FileNameExtensionFilter("Default file filter", ...)
);

after all other calls to the method

addChoosableFileFilter(...);

to make setAcceptAllFileFilterUsed(false) works.

0

This works fine in java8.1

JFileChooser dbfilechooser = new JFileChooser();
FileNameExtensionFilter filter1 = 
  new FileNameExtensionFilter("xls","xls");
FileNameExtensionFilter filter2 = 
  new FileNameExtensionFilter("xlsx", "xlsx");
FileNameExtensionFilter filter3 = 
  new FileNameExtensionFilter("csv", "csv");

dbfilechooser.addChoosableFileFilter(filter1);
dbfilechooser.addChoosableFileFilter(filter2);
dbfilechooser.addChoosableFileFilter(filter3);
Pritam Banerjee
  • 17,953
  • 10
  • 93
  • 108
Suma
  • 9
  • 2