JavaFX8 禁用 ScrollPane 的滚动
JavaFX8 Disable Scrolling of ScrollPane
我想知道是否有办法 disable/prevent 在 ScrollPane 中滚动?
基本上我有一个 Canvas 包裹在一个组对象中以启用缩放(由 'Ctrl + scroll' 完成)。尽管出于某种原因,ScrollPane 在触发任何其他 scrollEvent(例如来自 Canvas、组、ScrollPane 甚至 ScrollPane 的父级的 ScrollEvent!)之前消耗事件(如果它可以滚动)。
所以我想知道有哪些选项(如果有的话)可以在 ScrollPane 消耗滚动事件之前捕获它。
感谢您的宝贵时间
感谢 joshpy 我得到了答案。
我忘了 EventFilters 是 javafx 中的东西。幸运的是,您也可以在 eventFilter 中使用 Event,所以这里是解决方案。
scrollPane.addEventFilter(ScrollEvent.SCROLL, event -> {
if(event.isControlDown())
{
zoomCanvas(event) // zoom the canvas instead of scrolling the actual pane.
event.consume();
}
});
非常感谢您的提示!
虽然我仍然不确定为什么通常的事件不起作用。
我想知道是否有办法 disable/prevent 在 ScrollPane 中滚动?
基本上我有一个 Canvas 包裹在一个组对象中以启用缩放(由 'Ctrl + scroll' 完成)。尽管出于某种原因,ScrollPane 在触发任何其他 scrollEvent(例如来自 Canvas、组、ScrollPane 甚至 ScrollPane 的父级的 ScrollEvent!)之前消耗事件(如果它可以滚动)。
所以我想知道有哪些选项(如果有的话)可以在 ScrollPane 消耗滚动事件之前捕获它。
感谢您的宝贵时间
感谢 joshpy 我得到了答案。
我忘了 EventFilters 是 javafx 中的东西。幸运的是,您也可以在 eventFilter 中使用 Event,所以这里是解决方案。
scrollPane.addEventFilter(ScrollEvent.SCROLL, event -> {
if(event.isControlDown())
{
zoomCanvas(event) // zoom the canvas instead of scrolling the actual pane.
event.consume();
}
});
非常感谢您的提示! 虽然我仍然不确定为什么通常的事件不起作用。