Zooming Inside a Scrollpane
Join the DZone community and get the full member experience.
Join For FreeIn JavaFX if you want the user to be able to zoom the contents inside a scrollpane here’s a small gotcha that you have to be aware of: to accomplish this you must wrap the contents of the scroll node inside a group so that the visual bounds (not the layout bounds) are used for layout calculations.
Scrolling can than be attained by setting a scaling transform on the contents of the Scrollpane and adjusting the scale value to meet the specified zoom level.
Here’s a small snippet of code to illustrate how you could do it:
public class ZoomableScrollPane extends ScrollPane{ Group zoomGroup; Scale scaleTransform; Node content; (…) public ZoomableScrollPane(Node content) { this.content = content; Group contentGroup = new Group(); zoomGroup = new Group(); contentGroup.getChildren().add(zoomGroup); zoomGroup.getChildren().add(content); setContent(contentGroup); scaleTransform = new Scale(scaleValue, scaleValue, 0, 0); zoomGroup.getTransforms().add(scaleTransform); (…) } (…) }
Published at DZone with permission of Pedro Duque Vieira, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments