2011-07-22 9 views
0

私のSwingアプリケーションでは、USBポートを使用してマシンに接続されたバーコードスキャナを使用しています。バーコードスキャナを使ってスキャンするとすぐにアクション(ウィンドウをポップアップ)をトリガーしたい。スキャンが完了する前に、テキストフィールド(例:JTextField)がフォーカスされていません。テキストフィールドにフォーカスを当てずにキーストロークを受信するにはどうすればいいですか?

しかし、テキストフィールドに焦点を当てずに何かをスキャンすると、テキストフィールド領域にカーソルを合わせずにキーボードのA,B,C,Dを押すのと同じように、スキャンしてアプリケーションに値を登録しません。スキャンが行われるときにアプリケーションに内部的に通知し、バーコードスキャナの値をテキストフィールドに登録する必要があります。

どうすればよいですか?

+0

任意の入力ボックス.. like JTextField – Deepak

+0

'JTextField'では(現在ナンセンスが実装されているものとは対照的に)' setText(String) 'を使用します。私は 'JTextField'のような他のコンポーネントについては(明示的に特定されていない限り)話しません。 –

+0

InputMaskを使用したJFormattedTextField – mKorbel

答えて

1

ウィンドウを含む任意のコンポーネントにKeyListenerを追加できます。だから少なくとも何かが集中している場合は、イベントを受け取ります。

また、AWTEventListener:Toolkit.getDefaultToolkit().addAWTEventListener(listener, eventMask)を使用できます。興味のあるイベントを取得するには、eventMaskで再生します。これにより、AWTレベルでイベントを取得できます。アプリケーションに10個の独立したウィンドウがあり、それらすべてからイベントをキャッチしたい場合でも、1か所で行うことができます。

関連する問題