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).