Non mi è chiaro se qui sei nel main thread o nel EDT. Nel main generalmente è "buona" prassi (io lo faccio sempre) usare il solito invokeLater per avviare la creazione della interfaccia utente già fin da subito nel EDT.
Comunque questo punto è meno importante.
Questo sì, è più importante. E vuol dire che l'approccio dei piped input/output tecnicamente può funzionare.
Già ... riguardando meglio il codice che hai scritto mi pare ovvio!
stdinStream.println("\n");
O fai stdinStream.print("\n");
Oppure fai stdinStream.println();
Altrimenti se fai un mix è naturale che Scanner "veda" 2 newline (nota: è una cosa interna e non è documentata nel javadoc ma in Scanner il pattern del newline è "\r\n|[\n\r\u2028\u2029\u0085]", quindi accetta sia CR+LF che CR che LF).


Rispondi quotando
Ti ringrazio infinitamente, sia per l'aiuto che per la pazienza che hai portato. Ora il progetto è quasi terminato, devo solo fare un po' di refactoring e cancellare tutte le millemila righe di codice "vecchio" che ho lasciato lì, commentate, in attesa di chissà cosa 

