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 状態があります。したがって、フォーカスされているコンポーネントと、フォーカスされていないがウィンドウ内にある場合とでは違いがあります。conditionWHEN_IN_FOCUSED_WINDOWWHEN_FOCUSEDWHEN_ANCESTOR_OF_FOCUSED_COMPONENTJComponentJComponentInputMapInputMap
--引数なしでの呼び出しgetInputMap()は、 の便利なメソッドであることに注意してくださいgetInputMap(WHEN_FOCUSED)。--
ステップ2:
.put(KeyStroke.getKeyStroke("ENTER"), "none");
権利ができたInputMapので、何かを入れたいと思いますよね!? では、何を入れますか?これはマップなので、キーと値が必要です。
のキーは ですInputMap。この場合、 を呼び出して ENTER キーを指定しています。KeyStrokeKeyStroke.getKeyStroke("ENTER")
値は、のString名前を与えるa ですAction。
InputMapは通常、 と組み合わせて使用されますActionMap。の値はInputMapのキーですActionMap。値を指定InputMapしましたが、 には呼び出されたものが含まれていないため、何も起こりません。 "none"Action"none"ActionMap
つまり、全体として、ENTER キーが押されたときにJTable何もしないように に指示しました。
キー バインディングの詳細については、こちらを参照してください。
これが役立つことを願っています:)