Quote Originariamente inviata da fermat Visualizza il messaggio
l'avrei spezzato in due classi separate.
questo fa partire solo il DirectoryChooser:
[...]
questo prende la directory e lista le immagini:
[...]
secondo può andare?
o era inutile fare questa modifica??
Tecnicamente può anche andare. Stai però dimenticando un aspetto un po' più "pratico". Ogni volta che l'utente apre la dialog si ritrova nella home directory e magari deve fare parecchi click/azioni per spostarsi dove vuole. E se lo deve fare svariate volte .... è una rottura.
Tutto questo fa pensare di non fare questa logica in un contesto static ma di "promuovere" tutto quanto ad una classe per cui l'oggetto possa mantenere l'ultima directory scelta. Chiaramente poi l'oggetto va tenuto in vita per la durata della applicazione.

Tradotto in codice, ecco cosa farei io:

codice:
public class DirChooser {
    private File lastDir;

    public DirChooser() {
        lastDir = new File(System.getProperty("user.home"));
    }

    public Optional<File> showDialog(Window ownerWindow, String title) {
        DirectoryChooser chooser = new DirectoryChooser();
        chooser.setTitle(title);
        chooser.setInitialDirectory(lastDir);

        File dir = chooser.showDialog(ownerWindow);

        if (dir != null) {
            lastDir = dir;
            return Optional.of(dir);
        } else {
            return Optional.empty();
        }
    }
}

È ovviamente un po' più lunga del tuo chooseDir ma ha diversi vantaggi e aspetti positivi.

1) Non è specifica solo per immagini ma vale in generale. Cioè è riutilizzabile anche per altro.
2) L'oggetto DirChooser, se tenuto a lungo in vita per più showDialog, mantiene l'ultima directory scelta.
3) Nota come ho usato Optional (da Java 8) che permette di evitare di dover gestire un null nel chiamante.

Nota anche che showDialog di DirChooser riceve Window (javafx.stage.Window) e non Stage. Il showDialog di DirectoryChooser riceve Window ed io ho mantenuto la stessa "ampiezza" senza restringere nulla. Si può anche aggiungere un overload senza Window che chiama l'altro con null.