2014-09-26 51 views
1

我正在研究基於Web的Java應用程序(GWT用於我的UI)。 我有一個倉庫管理系統。我需要掃描條形碼並在文本框中顯示它們。 我知道掃描儀會發送鍵盤事件。如何捕獲這些事件並將其填充到我的文本框中?掃描條形碼時,光標應該聚焦在文本框上?將條形碼掃描到Web應用程序的文本框中

任何人都可以提供一個如何捕獲這些事件和填充文本框的代碼片段?

請注意,這需要跨不同的操作系統和瀏覽器。 這應該適用於筆記本電腦/臺式機。它不適用於移動應用程序。

+0

您無法在純Java中運行的Java應用程序之外捕獲鍵盤事件。這是明顯的安全原因。您將不得不使用低級別的* lib *或* dll *,這取決於操作系統。 – ortis 2014-09-26 14:44:29

回答

0

如果掃描條形碼是該頁面的默認動作,我會建議在輸入文本框中設置光標焦點,然後可以使用文本框上的KeyPressHandler攔截掃描儀的控制字符,如果其設置爲觸發回車符在每次掃描後換行(回車鍵)。

This 可能是一個開始尋找的地方。

快速搜索爲例想出了一個好here

0

由於無法掃描儀和鍵盤事件進行區分,只專注於文本框,並等待輸入。一定要設置掃描儀,以便它們隨後發送TAB,而不是ENTER。

0

根據您的掃描儀,可以對其進行編程,以在實際條形碼之前發送預定義的前綴。例如,我正在使用的掃描儀Honeywell Voyager 95X0可以配置爲在每個條形碼之前傳輸Start of TeXt (ASCII 02H)(請參閱配置指南的頁碼Chapter 8, page 42)。然後,您可以使用該前綴過濾掉哪些KeyPressEvent來自掃描器(然後將輸入移動到文本框中),哪些KeyPressEvent來自用戶。

設置「全局」KeyPressHandler(以便用戶在掃描條形碼之前不必記住將文本框對焦)應該很簡單 - 例如,請參閱this thread。關鍵點是使用Event.addNativePreviewHandler來捕獲事件,然後纔會將其發送給其處理程序。

相關問題