Question

Je veux à la limite de mes utilisateurs dans un répertoire et ses sous répertoires mais le "Parent Directory" bouton permet d'accéder à un répertoire particulier.

Comment dois-je faire?

Était-ce utile?

La solution

Vous pouvez probablement le faire en mettant votre propre FileSystemView.

Autres conseils

Au cas où quelqu'un d'autre a besoin dans le futur:

class DirectoryRestrictedFileSystemView extends FileSystemView
{
    private final File[] rootDirectories;

    DirectoryRestrictedFileSystemView(File rootDirectory)
    {
        this.rootDirectories = new File[] {rootDirectory};
    }

    DirectoryRestrictedFileSystemView(File[] rootDirectories)
    {
        this.rootDirectories = rootDirectories;
    }

    @Override
    public File createNewFolder(File containingDir) throws IOException
    {       
        throw new UnsupportedOperationException("Unable to create directory");
    }

    @Override
    public File[] getRoots()
    {
        return rootDirectories;
    }

    @Override
    public boolean isRoot(File file)
    {
        for (File root : rootDirectories) {
            if (root.equals(file)) {
                return true;
            }
        }
        return false;
    }
}

Vous aurez évidemment besoin de faire un meilleur "createNewFolder" la méthode, mais cela ne limiter l'utilisateur à l'un des plus répertoires.

Et de l'utiliser comme ceci:

FileSystemView fsv = new DirectoryRestrictedFileSystemView(new File("X:\\"));
JFileChooser fileChooser = new JFileChooser(fsv);

ou comme ceci:

FileSystemView fsv = new DirectoryRestrictedFileSystemView( new File[] {
    new File("X:\\"),
    new File("Y:\\")
});
JFileChooser fileChooser = new JFileChooser(fsv);

La solution de Allain est presque terminée.Trois problèmes sont ouverts à résoudre:

  1. En cliquant sur le "Home"-Bouton de coups de pied de l'utilisateur de restrictions
  2. DirectoryRestrictedFileSystemView n'est pas accessible à l'extérieur de l'emballage
  3. Point de départ n'est pas Racine

  1. Ajouter @Override pour DirectoryRestrictedFileSystemView

public TFile getHomeDirectory() { return rootDirectories[0]; }

  1. ensemble de la classe et un constructeur public

  2. Changement JFileChooser fileChooser = new JFileChooser(fsv); en JFileChooser fileChooser = new JFileChooser(fsv.getHomeDirectory(),fsv);

- Je l'utiliser pour restreindre les utilisateurs à rester dans un fichier zip via TrueZips TFileChooser et avec de légères modifications au code ci-dessus, cela fonctionne parfaitement.Merci beaucoup.

Pas besoin d'être compliqué.Vous pouvez facilement définir le mode de sélection d'un JFileChooser comme ceci

JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setMultiSelectionEnabled(false);

Vous pouvez lire plus de référence ici Comment Utiliser les Sélecteurs de Fichiers

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top