在此示例中,在FXML文件的ScrollPane上设置地图图像。
http://hg.openjdk.java.net/openjfx/8u-dev/rt/rev/36a59c629605
图像可通过其他方法调整大小,这些方法可更改包含图像的组缩放 - zoomGroup。
+ private void zoom(double scaleValue) {
+// System.out.println("airportapp.Controller.zoom, scaleValue: " + scaleValue);
+ double scrollH = map_scrollpane.getHvalue();
+ double scrollV = map_scrollpane.getVvalue();
+ zoomGroup.setScaleX(scaleValue);
+ zoomGroup.setScaleY(scaleValue);
+ map_scrollpane.setHvalue(scrollH);
+ map_scrollpane.setVvalue(scrollV);
+ }
但是为了确保ScrollPane重新计算其滚动条(因此可滚动区域有效地改变以包括任何比例的整个图像),包装Image的组zoomGroup然后被包装在另一个group,contentGroup中,它被设置为ScrollPane的内容。
+ // Wrap scroll content in a Group so ScrollPane re-computes scroll bars
+ Group contentGroup = new Group();
+ zoomGroup = new Group();
+ contentGroup.getChildren().add(zoomGroup);
+ zoomGroup.getChildren().add(map_scrollpane.getContent());
+ map_scrollpane.setContent(contentGroup);
有人可以解释为什么这是必要的吗?
这是文件附带的视频: https://www.youtube.com/watch?v=ij0HwRAlCmo