JavaFX TabPane 禁用按键切换选项卡

JavaFX TabPane disable tab switching by keys

我有一个 Tab,其中包含一些内容:ScrollBar 和其他。

ScrollBar 具有键的事件处理程序:leftright

但是如果我按下这些按钮,Tabs 就会切换,因为 TabPane 也有一个按键处理程序。

如何禁用 TabPane 的默认事件处理程序或更改切换策略?

问题是默认情况下 ScrollBar 不是 focus traversable,关键事件仅针对聚焦的 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 获得焦点,就会处理按键事件。