2016-07-29 14 views
1

Ich frage mich, ob es eine Möglichkeit gibt, das Scrollen in einem ScrollPane zu deaktivieren/zu verhindern?JavaFX8 Scrolling von ScrollPane deaktivieren

Grundsätzlich habe ich ein Canvas in einem Group-Objekt eingewickelt, um das Zoomen zu ermöglichen (was mit 'Strg + Scroll' gemacht wird). Aus irgendeinem Grund verbraucht ScrollPane das Ereignis (wenn es gescrollt werden kann), bevor es ein anderes scrollEvent auslöst (z. B. das ScrollEvent aus dem Canvas, Group, ScrollPane und sogar das Parent des ScrollPane!).

Also ich frage mich, was die Optionen sind (wenn es welche gibt), ein scrollEvent zu fangen, bevor es von der ScrollPane verbraucht wird.

Vielen Dank für Ihre Zeit

+0

würde die Deaktivierungsmethode den Job erledigen? – Javant

+1

Haben Sie versucht, Ereignisfilter zu verwenden? http://docs.oracle.com/javafx/2/events/filters.htm – jmpyle771

Antwort

0

Dank bekam ich die Antwort auf joshpy.

Ich habe vergessen, dass EventFilters eine Sache in javafx sind. Glücklicherweise können Sie das Event auch im eventFilter konsumieren, also hier ist die Lösung.

scrollPane.addEventFilter(ScrollEvent.SCROLL, event -> { 
    if(event.isControlDown()) 
    { 
     zoomCanvas(event) // zoom the canvas instead of scrolling the actual pane. 
     event.consume(); 
    } 
}); 

Vielen Dank für den Tipp! Ich bin mir immer noch nicht sicher, warum ein gewöhnliches Ereignis nicht funktionieren würde.