我正在研究基於Web的Java應用程序(GWT用於我的UI)。 我有一個倉庫管理系統。我需要掃描條形碼並在文本框中顯示它們。 我知道掃描儀會發送鍵盤事件。如何捕獲這些事件並將其填充到我的文本框中?掃描條形碼時,光標應該聚焦在文本框上?將條形碼掃描到Web應用程序的文本框中
任何人都可以提供一個如何捕獲這些事件和填充文本框的代碼片段?
請注意,這需要跨不同的操作系統和瀏覽器。 這應該適用於筆記本電腦/臺式機。它不適用於移動應用程序。
我正在研究基於Web的Java應用程序(GWT用於我的UI)。 我有一個倉庫管理系統。我需要掃描條形碼並在文本框中顯示它們。 我知道掃描儀會發送鍵盤事件。如何捕獲這些事件並將其填充到我的文本框中?掃描條形碼時,光標應該聚焦在文本框上?將條形碼掃描到Web應用程序的文本框中
任何人都可以提供一個如何捕獲這些事件和填充文本框的代碼片段?
請注意,這需要跨不同的操作系統和瀏覽器。 這應該適用於筆記本電腦/臺式機。它不適用於移動應用程序。
由於無法掃描儀和鍵盤事件進行區分,只專注於文本框,並等待輸入。一定要設置掃描儀,以便它們隨後發送TAB,而不是ENTER。
根據您的掃描儀,可以對其進行編程,以在實際條形碼之前發送預定義的前綴。例如,我正在使用的掃描儀Honeywell Voyager 95X0可以配置爲在每個條形碼之前傳輸Start of TeXt (ASCII 02H)
(請參閱配置指南的頁碼Chapter 8, page 42)。然後,您可以使用該前綴過濾掉哪些KeyPressEvent來自掃描器(然後將輸入移動到文本框中),哪些KeyPressEvent來自用戶。
設置「全局」KeyPressHandler(以便用戶在掃描條形碼之前不必記住將文本框對焦)應該很簡單 - 例如,請參閱this thread。關鍵點是使用Event.addNativePreviewHandler
來捕獲事件,然後纔會將其發送給其處理程序。
您無法在純Java中運行的Java應用程序之外捕獲鍵盤事件。這是明顯的安全原因。您將不得不使用低級別的* lib *或* dll *,這取決於操作系統。 – ortis 2014-09-26 14:44:29