に、arrow key
のリスナーをフォーカスをオフにすることはできますか?私は、領域内のスペースよりも多くのテキストがあるときに、それらとスクロールペインを動かすことに大いに助けています。私はこれを避けようとしています。JavaFXテキストリスナー
ありがとうございました。
に、arrow key
のリスナーをフォーカスをオフにすることはできますか?私は、領域内のスペースよりも多くのテキストがあるときに、それらとスクロールペインを動かすことに大いに助けています。私はこれを避けようとしています。JavaFXテキストリスナー
ありがとうございました。
イベントフィルタを使用できます。フィルタはイベント処理のイベント取得フェーズ(1番目はシーングラフの下)でイベントを受信し、ハンドラはイベントバブリングフェーズ(2番目はシーングラフの上)でトリガされます。このスニペットを見て:
TextArea textArea = new TextArea();
textArea.addEventFilter(KeyEvent.ANY, event -> {
KeyCode code = event.getCode();
boolean isArrowKey = code == KeyCode.UP || code == KeyCode.RIGHT
|| code == KeyCode.DOWN || code == KeyCode.LEFT;
if (isArrowKey) {
event.consume();
}
});
consume()
方法は、イベントのさらなる伝播を停止します。その結果、(キーイベント)リスナーはトリガーされません。しかし、これによって矢印キーをナビゲートする機能も無効になります。本当に必要なのはそれですか?
EDIT:your commentに関してで、this answer状態:
スクロールバーを制御するための動作は、内部的に(Javaの8に公共のJavaFX APIの一部ではない)TextAreaSkinでコード化されます。 TextAreaSkinをコピーまたはサブクラス化してその動作をカスタマイズし、次にattach your customized skin to your nodeをカスタマイズすることができます。これは実際には、あなたが望む方法で内部コントロールの動作をカスタマイズする "適切な"方法です。
正確ではありません。私は矢印で 'TextArea'のスクロールペインを動かすが、私自身のonKeyPressedイベントを持っていたいというこれらの特定のリスナーを無効にしたいと思います。今私はJavaFX Apiから+自分で実装したアクションを持っています。ポイントは、2番目のポイントをオフにすることです。私はそれが今より明確であることを願っています。 – Saris
@Saris私の答えを編集していただきありがとうございます。 – beatngu13
'if(textArea.isFocused())'が重複しています:フォーカスがない場合、テキスト領域はキーイベントを起動しません。 @Sarisこれがなぜあなたが望むことをしないのかは分かりません。あなた自身の機能を 'if(isArrowKey)'ブロックに追加するだけです。 –