JavaFX TabPane 禁用按键切换选项卡
JavaFX TabPane disable tab switching by keys
我有一个 Tab
,其中包含一些内容:ScrollBar
和其他。
ScrollBar
具有键的事件处理程序:left 和 right。
但是如果我按下这些按钮,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
获得焦点,就会处理按键事件。
我有一个 Tab
,其中包含一些内容:ScrollBar
和其他。
ScrollBar
具有键的事件处理程序:left 和 right。
但是如果我按下这些按钮,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
获得焦点,就会处理按键事件。