HTMLEditor などを含む ScrollPane 内に VBox があります。
スペース バーを押すたびに HTMLEditor 内にテキストを入力すると、期待どおりにエディター内に空白が表示されますが、Scrollpane も下にスクロールします。まず、EventFilter を Scrollpane に追加し、KEY_PRESSED イベントを消費することで、これを回避しました。しかし今、HTMLEditor 内でこのイベントが必要です。
だから私の質問: Scrollpane に KeyCode.SPACE でスクロールしないように指示するフラグはありますか、または Scrollpane をバイパスして入力フォーカス/キー イベントを HTMLEditor のみにルーティングする方法はありますか? または、このイベントを Scrollpane でのみフィルタリングする方法はありますか?
これは javafx Scene Builder でも再現できます。
Scrollpane->VBox (Scrollpane よりも大きいため、スクロールバーが表示されます)->2*HTMLEditor、ウィンドウでプレビュー、スペース バーを押します。
解決済み: KEY_PRESSED で KeyCode.SPACE を消費する EventFilter を HTMLEditor に追加しました。
htmlEditor.addEventFilter( KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent event) {
if (event.getEventType() == KeyEvent.KEY_PRESSED){
// Consume Event before Bubbling Phase, -> otherwise Scrollpane scrolls
if ( event.getCode() == KeyCode.SPACE ){
event.consume();
}
}
}
});