1

Swing で JTextField クラスを拡張するカスタム テキスト フィールド クラスがあります。

テキストフィールドを含むウィンドウがこれらのショートカットを必要なものにマップできるように、Ctrl-A (すべて選択)、Ctrl-H (バックスペース) などのデフォルトのアクションを無効にする方法を見つける必要があります。

どんな助けでも大歓迎です。

4

3 に答える 3

4

さて、自分で答えを見つけました:

テキストフィールドクラスの初期化メソッドに以下を追加しました。

this.getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_A, KeyEvent.CTRL_MASK), "none");

その結果、テキストフィールドはショートカットを無視し、キーストロークをウィンドウのショートカットハンドラーに渡すことができます。

于 2009-09-25T10:30:51.183 に答える
1

キーバインディングを作成および削除する方法は、実装に役立ちます。

デフォルトのキー バインドをすべて削除するには、親の 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");
于 2009-09-25T10:40:41.507 に答える
0

たぶん、 KeyMapを扱う必要があります。

于 2009-09-25T10:30:41.840 に答える