【发布时间】:2014-12-13 17:28:22
【问题描述】:
有人知道如何在 ScrollPane 中禁用鼠标滚轮滚动吗?
【问题讨论】:
标签: javafx mousewheel scrollpane
有人知道如何在 ScrollPane 中禁用鼠标滚轮滚动吗?
【问题讨论】:
标签: javafx mousewheel scrollpane
以下对我有用:
scrollPane.addEventFilter(ScrollEvent.ANY, new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
if (event.getDeltaY() > 0) {
zoomIn();
} else {
zoomOut();
}
event.consume();
}});
您可能会发现您还需要以下内容:
scrollPane.setOnScroll(new EventHandler<ScrollEvent>() {
@Override
public void handle(ScrollEvent event) {
if (event.getDeltaY() > 0) {
zoomIn();
} else {
zoomOut();
}
event.consume();
}
});
我将上述详细说明添加到此线程中的另一个答案中,但据我所知,它尚未出现在公共提要中。所以,我把它粘贴在它自己的答案中。
这个问题有点重复,但它首先出现在 Google 中,所以我正在回答它。上面的灵感是:
Zooming in JavaFx: ScrollEvent is consumed when content size exceeds ScrollPane viewport
【讨论】:
我认为没有直接的解决方案。
所以我会 add an event filter 到 ScrollPane 获取 SCROLL EventType 并使用每个事件。这应该可以防止任何鼠标生成的滚动事件被委托给 ScrollPane。
【讨论】:
ScrollEvent 的事件目标并仅在符合您的条件时才使用它。
setClip()methode。这是漏洞解决方案:Rectangle clipRectangle = new Rectangle(); clipRectangle.widthProperty().bind(contentPane.widthProperty()); clipRectangle.heightProperty().bind(contentPane.heightProperty()); contentPane.setClip(clipRectangle);