Quote Originariamente inviata da Pafi Visualizza il messaggio
1. System.setIn(buttonContinua.getIn()); viene fatto nel costruttore della Finestra(che estende JFrame).
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.

Quote Originariamente inviata da Pafi Visualizza il messaggio
2. Il metodo pressEnter(), al cui interno viene chiamato il nextLine(), viene chiamato decisamente nel main thread, poichè fa parte del codice relativo al programma senza grafica.
Questo sì, è più importante. E vuol dire che l'approccio dei piped input/output tecnicamente può funzionare.

Quote Originariamente inviata da Pafi Visualizza il messaggio
quando premo il pulsante innesco un "doppio Enter", ossia do il segnale a DUE pressEnter consecutivi.
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).