2014-12-13 104 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

相關問題