Io prenderei il testo dal primo carattere fino alla posizione corrente del carrello, poi separerei la parte completa del percorso da quella incompleta. Cioè se nel campo di testo c'è scritto:
c:\programmi\ja[carrello]quel che è
Prenderei la stringa
s = c:\programmi\ja
con
int last = s.lastIndexOf(File.separator)
dir = s.substring(0, last + 1)
ricavo la "base" del percorso, esamino il contenuto di quella cartella:
File[] files = new File(base).listFiles();
e con una semplice scansione lineare decido quale sia il candidato ideale. Per lo scorrimento circolare dei candidati si potrebbe usare la condizione "se base è uguale alla base precedente allora il candidato è quello successivo all'ultimo proposto". Per farlo è sufficiente un piccolo caching della base, della lista di file e dell'indice dell'ultimo candidato.
10 a 1 che ho frainteso il problema

.