Allora, prima questione importante: quella applicazione "console" richiede input sullo standard-input .... o tramite input diretto a "basso" livello (tramite API specifiche, es. quelle Win32 o le funzioni es. getch() del C)?
Sono due cose ben diverse. Nel primo caso puoi operare da Java, potendo appunto "scrivere" sullo standard-input del processo lanciato. Nel secondo caso NON puoi fare nulla.
Seconda questione: tutto quel codice che hai postato, nel contesto di quale thread lo stai eseguendo?
Terzo aspetto: ammesso che quella applicazione usi gli stream standard, fa dell'output su standard-output? Se sì appunto dovresti leggerlo (come fai con quel while). Immagino che quella applicazione termini solo dopo che hai dato un comando specifico. Quindi che faccia output o no, comunque la applicazione resta in vita per un bel po' di tempo e quindi rimani comunque dentro quel while fino a che termina.
Questo vuol dire che quel tuo codice è "bloccante", tiene impegnato il thread corrente (ti ho chiesto prima del thread, non deve essere il Event Dispatch Thread).