Я только что начал возиться с JLine для анализа ввода символов в режиме консоли. Вроде хорошо работает, но мне интересно:
Есть ли в JLine неблокирующий способ узнать, доступны ли символы? (то есть как kbhit()
в Windows.)
Полагаю, я всегда мог обернуть ввод с клавиатуры в свой собственный поток, который затем предлагает символы клавиатуры в поточно-ориентированной очереди в основной поток, но, похоже, в этом нет необходимости.
РЕДАКТИРОВАТЬ : Это синтаксический анализ. Я не собираюсь использовать графический интерфейс. Обычный ввод / вывод InputStream в Java в режиме консоли требует, чтобы вы сначала нажали клавишу Enter (например, это только буферизованный ввод). Пожалуйста, не говорите мне, что посимвольный ввод в консольном режиме невозможен в Java; это не так JLine делает это, используя переносимый интерфейс с реализацией, зависящей от платформы.
Редактировать обновление : мне удалось собрать вместе вспомогательный класс, чтобы выполнить блокировку ввода-вывода в рабочем потоке (используя JLine для ввода-вывода для каждого символа, предупреждение: вам нужно проанализировать Ctrl-C самостоятельно!) И затем общайтесь через синхронизированную очередь с помощью подпрограммы isempty (). Для того, что я делаю сейчас, это хорошо, но мне бы очень хотелось знать, как сделать это в будущем.