Ciao.
Nuovo quesito a riguardo dei JFileChooser.
La mia necessità è quella di permettere all'utente di poter scegliere dei documenti solo a partire da una determinata cartella. Questo perché il path del documento lo salvo in un DB, e vorrei che passando questo DB da un PC all'altro i link ai documenti non "saltassero".
I nomi dei file li "mappo" sul percorso della mia cartella radice.
Il codice che ho scritto è questo:
Quando creo i JFileChooser imposto sia il MyFileSystemView che la cartella corrente per il JFileChooser al valore della cartella superiore permessa e tutto funziona.codice:/** * Limita il pulsante Cartella superiore * @author utente */ class MyFileSystemView extends FileSystemView { private final File[] cartelleSuperiori; // array delle cartelle superiori a cui limitare /** * Costruisce un FileSystemView impostando come cartella superiore cartelleSuperiori * @param cartelleSuperiori */ public MyFileSystemView(File[] cartelleSuperiori) { this.cartelleSuperiori = cartelleSuperiori; } /** * Costruisce il FileSystemView impostando come cartella superiore cartellaSuperiore * @param cartellaSuperiore percorso della cartella superiore permessa */ public MyFileSystemView(File cartellaSuperiore) { this.cartelleSuperiori = new File[]{cartellaSuperiore}; } @Override public File createNewFolder(File containingDir) throws IOException { throw new UnsupportedOperationException("Non ancora implementata."); } @Override public File[] getRoots() { return this.cartelleSuperiori; } @Override public boolean isRoot(File f) { for (File cartella : this.cartelleSuperiori) { if (cartella.equals(f)) { return true; } } return false; } }
Il problema nasce dal fatto che il campo nome file è editabile, e quindi se scrivo "..", oppure un qualunque percorso valido al di fuori di questa cartella, il sistema me lo accetta.
Come faccio per fare in modo che anche la scrittura di una cartella al di fuori di quella che vorrei come superiore non venga processato?

al volante son nervoso
Rispondi quotando