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