OK、また行きます。スティーブは、別の非標準のキーストロークのセットをプログラムする必要があります。編集可能なJTextPaneがJScrollPaneに埋め込まれています。このペインは上矢印キーと下矢印キーを正しく処理しますが、その方法がわかりません。方法がわかれば、実装する必要のある非標準的なものを実装できます。
具体的には、PageDownキーは別の機能を実行するようにグローバルにマップされているため、PageUp、PageDown、Ctrl-PageUp、およびCtrl-PageDownのデフォルトのアクションは実行しません。代わりに、これらの関数を、テンキーの関数ではなく、シフトされた矢印キーにマップします。
具体的には、JScrollPaneクラスの祖先入力マップ((InputMap)UIManager.get( "ScrollPane.ancestorInputMap");)に追加します。
- 「scrollDown」アクションを指すAncestor入力マップに下向き矢印キーをシフト
- 「scrollUp」アクションを指すAncestor入力マップへのシフトアップ矢印キー
- 「scrollHome」アクションを指すAncestor入力マップに左矢印キーをシフト
- 「scrollEnd」アクションを指すAncestor入力マップに右矢印キーをシフト
これらのキーストロークはどれも何もしません。JComponentのprocessKeyEvent()メソッドとprocessKeyBinding()メソッドをオーバーライドして、何が起こっているかをログに記録しましたが、これらのメソッドがこれらのキーストロークによって起動されることはありません。また、これらのキーストロークは機能しますが、プレーンな標準の上矢印および下矢印キーストロークはこれらのメソッドを起動しません。
したがって、他の何かがこれらのキーストロークを処理していることは明らかです。しかし、それはどのような要素ですか?そして、はい、私がこれを試しているとき、テキストペインには焦点があります。