web-dev-qa-db-fra.com

Comment limiter les sélecteurs de fichiers en Java à des fichiers spécifiques

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:
}

Salut les gars .... J'essaie de filtrer des fichiers dans un filtre de fichiers en définissant fileChooser.setAcceptAllFileFilterUsed(false);. L'option "tous les fichiers" disparaît de la FileChooser mais tous les fichiers restent visibles à moins que vous ne sélectionniez une option dans PDF documents, ms Office ou images.Je ne souhaite utiliser que mes 3 filtres personnalisés à l'ouverture du sélecteur de fichiers. 

12
julihx

Par exemple, si vous souhaitez filtrer votre JFileChooser afin d’afficher strictement les fichiers d’image les plus couramment trouvés, utilisez la méthode suivante: 

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

Le premier argument est la description (ce qui est affiché lors de la sélection en bas) et le second argument correspond aux extensions de fichier informelles.

13
Josh M

Vous pouvez utiliser FileNameExtensionFilter pour ajouter des extensions autorisées à votre boîte de dialogue FileChooser. Voici un exemple:

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

Pour plus d'informations, reportez-vous aux Javadocs: FileNameExtensionFilter

2
Grodriguez

Cela fonctionne bien en 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);
0
Suma

Dans mon cas, je devais mettre le 

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

après tous les autres appels à la méthode

addChoosableFileFilter(...);

pour que setAcceptAllFileFilterUsed (false) fonctionne.

0
Nguyễn Minh Vũ