ciao!
cercando di migliorare un pò il "design" di un programmino, volevo un consiglio sul codice che avevo scritto.
questo quello iniziale:
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;
}
}
l'avrei spezzato in due classi separate.
questo fa partire solo il DirectoryChooser:
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);
}
}
questo prende la directory e lista le immagini:
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;
}
}
secondo può andare?
o era inutile fare questa modifica??