У меня есть VBox внутри ScrollPane, который содержит HTMLEditor и другие вещи.
Когда я набираю текст внутри HTMLEditor каждый раз, когда я нажимаю пробел, я получаю пробел внутри редактора, как и ожидалось, но также прокручивается вниз. Сначала я обошел это, добавив EventFilter в панель прокрутки и используя событие KEY_PRESSED. Но теперь мне нужно это событие внутри HTMLEditor.
Итак, мой вопрос: есть ли какой-либо флаг, чтобы указать панели прокрутки не прокручивать KeyCode.SPACE или есть способ направить входные события Focus/Key только в HTMLEditor, минуя панель прокрутки? Или способ отфильтровать это событие только на панели прокрутки?
Вы также можете воспроизвести это с помощью javafx Scene Builder:
Панель прокрутки-> VBox (больше, чем панель прокрутки, поэтому появляются полосы прокрутки) -> 2 * HTMLEditor, предварительный просмотр в окне, нажмите пробел.
Решено: добавлен EventFilter в HTMLEditor, который использует KeyCode.SPACE при нажатии KEY_PRESSED.
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();
}
}
}
});