2013-09-02 20 views
12
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: 
} 

Witam gości ... Próbuję filtrować pliki w filtrze pliku, ustawiając fileChooser.setAcceptAllFileFilterUsed(false);. Opcja "wszystkie pliki" znika z FileChooser, ale wszystkie pliki pozostają widoczne, chyba że wybierzesz opcję z dokumentów PDF, MS Office lub obrazów. Chcę, aby przy otwieraniu selektora plików były tylko moje 3 niestandardowe filtry.Jak ograniczyć wybór plików w java do określonych plików

+1

Wykorzystanie 'setFileFilter (filtr FileFilter)' aby ustawić filtr domyślny podczas ładowania. – BlackBox

+0

Czy przejrzałem samouczek dotyczący wyboru pliku (http://docs.oracle.com/javase/tutorial/uiswing/components/filechooser.html)? Wyjaśnia użycie filtra plików oraz 'FileView'. BTW - Aby uzyskać lepszą pomoc wcześniej, opublikuj [SSCCE] (http://sscce.org/). –

+0

Dzięki ..... dodano domyślny filtr działający fileChooser.setFileFilter (new FileNameExtensionFilter ("Dokumenty PDF", "pdf")); – julihx

Odpowiedz

12

Na przykład, jeśli chcesz filtrować JFileChooser ściśle wyświetlać najczęściej znaleźć pliki obrazów, należy użyć coś podobnego to:

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

Pierwszy argument to opis (co zostanie wyświetlone po zaznaczeniu u dołu), a drugi argument to nieformalne rozszerzenia plików.

1

Możesz użyć FileNameExtensionFilter, aby dodać dozwolone rozszerzenia do swojego okna dialogowego FileChooser. Oto przykład:

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

Aby uzyskać więcej informacji, proszę zapoznać się z Javadocs: FileNameExtensionFilter

0

W moim przypadku musiałem umieścić

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

po wszystkich innych połączeń do sposobu

addChoosableFileFilter(...); 

aby setAcceptAllFileFilterUsed (fałsz) działa.

0

Działa to dobrze w 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); 
Powiązane problemy