Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    si infatti volevo sistemare per rendere il DirectoryChooser riusabile.
    ma non avevo pensato a questa finezza in effetti.

    ho preso il tuo codice, e poi fatto questo nel controller:
    codice:
    public class MainController {
    
        private Stage stage = null;
        private ListImagesDirectory lid = null;
        private DirChooser dc;
    
        @FXML
        public void initialize() {
            dc = new DirChooser();
        }
    
        private Stage getStage() {
            stage = (Stage) mainPane.getScene().getWindow();
            return stage;
        }
    
        @FXML
        private void openDirectory() {
            lid = new ListImagesDirectory();
            images = lid.getImages(dc.showDialog(getStage().getOwner(), "Choose directory").get());
        }
    
    }
    dove ListImagesDirectory l'ho postato sopra.
    sembra funzionare alla perfezione!!

    grazie mille per la dritta!!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Occhio solo ad alcuni piccoli aspetti da tenere presente:

    Quote Originariamente inviata da fermat Visualizza il messaggio
    codice:
    images = lid.getImages(dc.showDialog(getStage().getOwner(), "Choose directory").get());
    Il get() non va usato così in modo indiscriminato. Perché se il Optional è "vuoto", il get() lancia NoSuchElementException.
    Il Optional, detto in generale, andrebbe gestito o usando es. isPresent() (cioè testando prima di fare il get() ), oppure usandolo in maniera più "funzionale" con i map/filter/ecc...


    Quote Originariamente inviata da fermat Visualizza il messaggio
    codice:
        public ArrayList<String> getFilesExts(File dir, String... extensions) {
            ArrayList<String> listfiles = new ArrayList<>();
            if (dir != null) {
                File[] files = dir.listFiles(new ExtensionFilenameFilter(extensions));
                for (File f : files) {
                    listfiles.add(f.getAbsolutePath());
                }
            }
            return listfiles;
        }

    Attenzione ad un piccolo cavillo. Il listFiles può restituire null in due casi: il File usato non è una directory o c'è stato un errore di I/O durante la scansione. Questo andrebbe considerato. Nel tuo caso sbucherebbe fuori un NullPointerException all'inizio del for-each.


    P.S.
    Riguardo il ExtensionFilenameFilter c'è una cosa che non mi è venuta in mente prima. Sono partito in quarta per farti vedere come implementavo FilenameFilter. Ma visto che si tratta di filtrare solo file, sarebbe stato più utile implementare FileFilter per poter testare facilmente se è un file con isFile().
    E' una finezza nel senso che difficilmente qualcuno si fa una directory chiamata qualcosa.jpg ... ma sai, non si sa mai ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.