のためにキーバインド私は以前のKeyListenerを使用して解決してきた私の本から問題を書き換えることでキーバインドを習得しようとしてきました。私はキーバインドを使用して解決するために苦労してる問題がタイプされていて、パネルに表示するメッセージを記録するために私を必要とします。Javaのスイング:KEY_TYPEDイベント
それのKeyListenerを使用して解決した方法は、ユニコードがkeyTypedに()メソッドを使用しkeyPressedと改質剤/非Unicodeのキーを読み取ると文字を記録することによって、単純です。 KeyEvent.VK_ENTERはのKeyEventからのキーコードと一致する場合、それはパネル上の文字列が表示されます。
~~~~~~~~
私はそれがキーバインドと同様の方法で解決することができると考えました。 KeyEventドキュメントでは、文字が入力されるたびにKeyEvent.KEY_TYPEDが起動されることを示しています。私は、対応するUnicodeを持つすべての文字が、KeyListenerでどのように動作するかのように型付けされていることを意味するものと仮定しました。
その後、KeyBindsに関するOracleのチュートリアルでは、actionPerformed()が呼び出されたときにKeyEventが消費されるため、文字を取得する方法がわかりません。
これは私がキーバインドを使用してのStringBuilderに入力されたキーを記録するために私を可能にするだろうと思ったのコードです:
getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.KEY_TYPED, 0), "recordTypedKey");
getActionMap().put("recordTypedKey", addCharToString);
は、追加のほかのKeyListenerのkeyTypedに()メソッドを呼び出します文字を取得するためにそこの方法ですそれを記録するために別々のアクションイベントを使用していますか?
キーバインディングをマップするために使用されていますアクションに対する特定のキーストロークすべてのキーストロークを聞くためにキーバインディングを使用しません。 '私はキーバインドを使用して解決するために苦労してる問題は多分あなたは' DocumentListener'をtyped'-を使用する必要がありますされていたメッセージを記録するために私を必要とします。このリスナーは、任意のテキストコンポーネントの 'Document'に追加できます。 – camickr