JavaFX TabPane отключить переключение вкладок по клавишам

У меня есть Tab с некоторым содержимым: ScrollBar и другое.

ScrollBar имеет обработчик событий для клавиш: left и right.

Но если я нажимаю эти кнопки, Tabs переключаются, потому что TabPane тоже имеет ключевой обработчик.

Как отключить обработчик событий по умолчанию для TabPane или изменить политику переключения?


person AlexTtv    schedule 15.02.2017    source источник


Ответы (1)


Проблема в том, что ScrollBar не является фокус доступен по умолчанию, а ключевые события запускаются только для сфокусированных Node.

Вы можете установить фокус ScrollBar проходимым:

sb.setFocusTraversable(true);

sb.setOnKeyPressed(e -> {
    if ( e.getCode().equals(KeyCode.RIGHT))
        sb.setValue(sb.getValue()+0.01);
    else if(e.getCode().equals(KeyCode.LEFT))
        sb.setValue(sb.getValue()-0.01);
});

В этом случае всякий раз, когда фокусируется ScrollBar, обрабатываются ключевые события.

person DVarga    schedule 15.02.2017
comment
Но также как мы можем полностью отключить левую и правую стрелки для TabPane. - person GOXR3PLUS; 28.10.2018