Javafx禁用ScrollPane中的滚轮滚动
答
我认为没有直接的解决方案。
所以我会add an event filter到ScrollPane的SCROLL EventType并消耗每一个事件。这应该防止将任何鼠标生成的滚动事件委派给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
好的,谢谢。这帮助我现在。但是,如果我想启用滚动窗格中的元素的滚动操作。例如一个TableView? – Studiosus 2014-12-28 15:00:43
您可以检查'ScrollEvent'的事件目标,并且只有符合您的条件才会使用它。 – eckig 2014-12-28 15:14:47
我试过了,但事件的目标是每次都是滚动窗格。 ( – Studiosus 2014-12-28 15:33:16