【发布时间】:2016-09-14 19:53:00
【问题描述】:
我正在开发一个使用 JavaFX 和 CSS 制作的应用程序。我已经到了必须在 scrollPane(在 GridPane 内)内显示图片的地步。我需要放大这张照片。我成功地按预期使用了触控板的多点触控功能。
但是在放大时,滚动条没有显示或保持在加载时的状态。 (显示(或不显示)条形取决于图片的大小。)
缩小时也会发生同样的事情。
图片会自己说话。
你可以注意到这里显示了垂直滚动条,因为图片太长了。
没有显示滚动条。除了垂直的,它是相同的状态。
缩小时可以很容易地看到,这也是一样的。
所以。如何设置条形以适应缩放?我希望能够用我的触控板“移动”图片。 (滚动条通过多点触控手势运行,并且可以正常工作。)
这是我的代码的一部分:
Tab newTab = new Tab(file.getName());
newTab.setClosable(true);
// Create ImageView of Picture
ImageView imageView = new ImageView();
// Add ImageView to tab
scrollPane = new ScrollPane();
/*
* ZOOM
*/
zoomProperty = new SimpleDoubleProperty(200);
zoomProperty.addListener(new InvalidationListener() {
@Override
public void invalidated(Observable arg0) {
imageView.setFitWidth(zoomProperty.get() * 4);
imageView.setFitHeight(zoomProperty.get() * 3);
}
});
scrollPane.setOnZoom(new EventHandler<ZoomEvent>() {
@Override
public void handle(ZoomEvent event) {
imageView.setScaleX(imageView.getScaleX() * event.getZoomFactor());
imageView.setScaleY(imageView.getScaleY() * event.getZoomFactor());
event.consume();
}
});
scrollPane.setOnZoomFinished(new EventHandler<ZoomEvent>() {
@Override
public void handle(ZoomEvent event) {
// I want to add something here but don't know what.
event.consume();
}
});
/*
* END ZOOM
*/
imageView.setImage(new Image(file.toURI().toString()));
imageView.preserveRatioProperty().set(true);
scrollPane.setContent(imageView);
newTab.setContent(scrollPane);
TabView.addTab(newTab);
}
非常感谢。如果我忘记了一些,请不要犹豫,要求确认或其他信息。
【问题讨论】:
标签: css javafx scroll zooming pane