2014-12-13 69 views

回答

2

我认为没有直接的解决方案。

所以我会add an event filter到ScrollPane的SCROLL EventType并消耗每一个事件。这应该防止将任何鼠标生成的滚动事件委派给ScrollPane。

+0

好的,谢谢。这帮助我现在。但是,如果我想启用滚动窗格中的元素的滚动操作。例如一个TableView? – Studiosus 2014-12-28 15:00:43

+0

您可以检查'ScrollEvent'的事件目标,并且只有符合您的条件才会使用它。 – eckig 2014-12-28 15:14:47

+0

我试过了,但事件的目标是每次都是滚动窗格。 ( – Studiosus 2014-12-28 15:33:16

0

对我来说,以下工作:

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

相关问题