2014-09-26 1 views
1

Я работаю над веб-приложением Java (GWT используется для моего пользовательского интерфейса). У меня есть система управления складом. Мне нужно отсканировать штрих-коды и показать их в текстовом поле. Я знаю, что сканеры отправили события клавиатуры. Как я могу захватить эти события и заполнить их в своем текстовом поле? Если фокус курсора находится в текстовом поле при сканировании штрих-кода?Сканирование штрих-кода в текстовое поле веб-приложения

Может ли кто-нибудь указать фрагмент кода, как захватить эти события и заполнить в текстовом поле?

Обратите внимание, что это необходимо для работы с различными ОС и браузерами. Это должно работать для ноутбуков/настольных компьютеров. Это не для мобильных приложений.

+0

Вы не можете захватить событие клавиатуры вне запущенного приложения Java в чистой Java. Это для очевидной причины безопасности. Вам придется использовать низкоуровневые * lib * или * dll *, которые будут зависеть от ОС. – ortis

ответ

0

Я бы рекомендовал установить курсор фокуса на текстовое поле ввода, если штрих-коды сканирования являются действием по умолчанию для этой страницы, затем вы можете использовать KeyPressHandler в текстовом поле для перехвата управляющего символа сканера, если его настроено на срабатывание возврата каретки (введите ключ) после каждого сканирования.

This может быть местом для начала поиска.

Быстрый поиск примера придумал хороший одну here

0

Поскольку вы не можете различить сканер и события клавиатуры, просто сосредоточиться на текстовом поле и ждать ввода. Обязательно настройте сканеры, после чего они отправляют TAB, а не ENTER.

0

В зависимости от вашего сканера можно запрограммировать его для отправки предопределенного префикса перед фактическим штрих-кодом. Например, сканер, с которым я работал, Honeywell Voyager 95X0, может быть настроен для передачи, например, Start of TeXt (ASCII 02H) перед каждым штрих-кодом (см. Стр. Chapter 8, page 42 руководства по конфигурации). Затем вы можете использовать этот префикс для фильтрации, из которого KeyPressEvents поступали из сканера (а затем перемещали ввод в текстовое поле) и которые были от пользователя.

Настройка «глобального» KeyPressHandler (так что пользователю не нужно запоминать фокус текстового поля перед сканированием штрих-кода) должно быть тривиально - см., Например, this thread. Ключевым моментом является использование Event.addNativePreviewHandler для захвата событий, прежде чем они будут уволены их обработчиками.