Swing で JTextField クラスを拡張するカスタム テキスト フィールド クラスがあります。
テキストフィールドを含むウィンドウがこれらのショートカットを必要なものにマップできるように、Ctrl-A (すべて選択)、Ctrl-H (バックスペース) などのデフォルトのアクションを無効にする方法を見つける必要があります。
どんな助けでも大歓迎です。
Swing で JTextField クラスを拡張するカスタム テキスト フィールド クラスがあります。
テキストフィールドを含むウィンドウがこれらのショートカットを必要なものにマップできるように、Ctrl-A (すべて選択)、Ctrl-H (バックスペース) などのデフォルトのアクションを無効にする方法を見つける必要があります。
どんな助けでも大歓迎です。
さて、自分で答えを見つけました:
テキストフィールドクラスの初期化メソッドに以下を追加しました。
this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none");
その結果、テキストフィールドはショートカットを無視し、キーストロークをウィンドウのショートカットハンドラーに渡すことができます。
キーバインディングを作成および削除する方法は、実装に役立ちます。
デフォルトのキー バインドをすべて削除するには、親の InputMap を逆参照します。
jtextField.getInputMap().setParent(null);
ただし、すべてのキーバインディングが削除されるため、文字を入力できなくなります。JTextField の入力には 3 つの親があります。そのため、以下のように特定のキー バインディングをオーバーライドすることをお勧めします。
InputMap inputMap = jtextfield.getInputMap();
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.CTRL_DOWN_MASK), "foo");
inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_A, Key_Event.META_DOWN_MASK), "foo");
たぶん、 KeyMapを扱う必要があります。