java JavaFX滚动窗格禁用按箭头键滚动
在这种情况下,请您提出建议: 我有滚动窗格和网格窗格。在GridPane中,我有许多按钮。当我用鼠标聚焦一个按钮并尝试用箭头键移动焦点时,焦点仍然停留在同一个按钮上,而我只看到滚动窗格滚动
如何禁用ScrollPane的箭头键滚动并将该事件发送给我的子按钮。我试着做一些事情,比如:
ScrollPane sp = new ScrollPane() {
@Override
public void requestFocus(){}
};
sp.addEventFilter(KeyEvent.ANY, (event) -> {
if(event.getCode() == KeyCode.DOWN) {
event.consume();
javafx.event.Event.fireEvent(mainGrid, event);
}
});
但不幸的是,这并没有奏效
我还能做什么? 非常感谢,, 罗马人
# 1 楼答案
我已经改变了您使用事件的方式,这不会阻止按钮获取关键事件,而且您遍历节点的方式通常是使用tab按钮,但我不知道您实现了什么。当焦点在按钮上时,这会打印出你按下的每个键,而不会滚动
我认为这不起作用的原因是,事件首先进入滚动窗格,然后从那里传递到按钮,当你过滤事件时,它不会传递事件。但我没有事实支持这一点,如果其他人想详细说明或告诉我我错了,我将删除这个解释
# 2 楼答案
谢谢。我做了一些研究,得出结论,事件到达了按钮,但有东西阻止了“聚焦功能”,而聚焦没有移动到下一个按钮(( 但如果我按tab键,然后集中注意力移动!如何通过按箭头键进行移动? 看到我的代码了吗
}
有没有解决“焦点问题”的办法