Właśnie zacząłem bawić się z JLine, aby analizować dane wejściowe znaków w trybie konsoli. Wygląda na to, że działa dobrze, ale zastanawiam się:Parsowanie wejścia klawiatury Java w aplikacji konsolowej
Czy w JLine dostępny jest niezablokowany sposób sprawdzania, czy dostępne są znaki? (Czyli jak kbhit()
w systemie Windows).
Przypuszczam, że zawsze mogła owinąć wprowadzanie danych z klawiatury w swoim wątku następnie oferuje znaków klawiaturowych w wątku bezpieczny kolejce do głównego wątku, ale wydaje się, że powinna być niepotrzebne.
EDIT: Jest to parsowanie znaków po znaku. Nie zamierzam używać GUI. Typowe wejścia/wyjścia InputStream w Javie w trybie konsoli wymagają najpierw naciśnięcia klawisza Enter (na przykład tylko buforowanego wejścia). Proszę nie mówić mi, że wprowadzanie znaków po znaku w trybie konsoli jest niemożliwe w Javie; nie jest. JLine robi to za pomocą przenośnego interfejsu z implementacją zależną od platformy.
Edycja aktualizacja: Udało mi się włamać razem klasę pomocniczą zrobić blokowania I/O w wątku roboczego (przy JLine dla jednej znaku I/O, ostrzeżenie: trzeba analizować Ctrl-C siebie!) & następnie komunikować się za pośrednictwem zsynchronizowanej kolejki z procedurą isempty(). To, co teraz robię, jest w porządku, ale naprawdę chciałbym poznać dobry sposób na zrobienie tego w przyszłości.
Czy możesz opublikować wyciętą odpowiedź? Wygląda bardzo interesująco. – OscarRyz