table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.put(KeyStroke.getKeyStroke("ENTER"), "none");
このコード行を 2 つのステップに分割しましょう。
ステップ1:
table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
すべての JComponent にはいくつかの がありInputMaps
ます。AnInputMap
は基本的KeyStrokes
にアクションにマッピングする方法です。
このメソッドは、 、 、およびの 3 つの値のいずれかでgetInputMap()
ある引数 を取ります。これらはクラスで宣言された定数であり、コンポーネントが取り得るさまざまな状態に対応しています。Aにはfor each 状態があります。したがって、フォーカスされているコンポーネントと、フォーカスされていないがウィンドウ内にある場合とでは違いがあります。condition
WHEN_IN_FOCUSED_WINDOW
WHEN_FOCUSED
WHEN_ANCESTOR_OF_FOCUSED_COMPONENT
JComponent
JComponent
InputMap
InputMap
--引数なしでの呼び出しgetInputMap()
は、 の便利なメソッドであることに注意してくださいgetInputMap(WHEN_FOCUSED)
。--
ステップ2:
.put(KeyStroke.getKeyStroke("ENTER"), "none");
権利ができたInputMap
ので、何かを入れたいと思いますよね!? では、何を入れますか?これはマップなので、キーと値が必要です。
のキーは ですInputMap
。この場合、 を呼び出して ENTER キーを指定しています。KeyStroke
KeyStroke.getKeyStroke("ENTER")
値は、のString
名前を与えるa ですAction
。
InputMap
は通常、 と組み合わせて使用されますActionMap
。の値はInputMap
のキーですActionMap
。値を指定InputMap
しましたが、 には呼び出されたものが含まれていないため、何も起こりません。 "none"
Action
"none"
ActionMap
つまり、全体として、ENTER キーが押されたときにJTable
何もしないように に指示しました。
キー バインディングの詳細については、こちらを参照してください。
これが役立つことを願っています:)