ciao!
cercando di migliorare un pò il "design" di un programmino, volevo un consiglio sul codice che avevo scritto.
questo quello iniziale:
l'avrei spezzato in due classi separate.codice:public class ListImages { public static ArrayList<String> getImages(Stage stage) { ArrayList<String> images = new ArrayList<>(); DirectoryChooser dc = new DirectoryChooser(); dc.setTitle("Open photo directory"); dc.setInitialDirectory(new File(System.getProperty("user.home"))); File dir = dc.showDialog(stage); if (dir != null) { File[] files = dir.listFiles( (dir1, name) -> ( name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png") )); for (File f : files) { images.add(f.getAbsolutePath()); } } return images; } }
questo fa partire solo il DirectoryChooser:
questo prende la directory e lista le immagini:codice:public class ListImages { public static File chooseDir(Stage stage) { DirectoryChooser dc = new DirectoryChooser(); dc.setTitle("Open photo directory"); dc.setInitialDirectory(new File(System.getProperty("user.home"))); return dc.showDialog(stage); } }
secondo può andare?codice:public class ListImagesDirectory { public ArrayList<String> getImages(File dir) { ArrayList<String> images = new ArrayList<>(); if (dir != null) { File[] files = dir.listFiles( (dir1, name) -> ( name.endsWith(".jpg") || name.endsWith(".jpeg") || name.endsWith(".png") )); for (File f : files) { images.add(f.getAbsolutePath()); } } return images; } }
o era inutile fare questa modifica??

Rispondi quotando