私はJavaFXとCSSで作られたアプリケーションに取り組んでいます。私は、GridPaneの内側にあるscrollPane内に画像を表示しなければならないところに達しました。私はこの写真をズームする必要があります。トラックパッドのマルチタッチ機能を意図どおりに使用することに成功しました。JavaFX 2.2 - scrollPaneをズームした後にスクロールする方法
ズームインすると、スクロールバーが表示されないか、読み込み時の状態にとどまります。 (バーは画像のサイズに応じて表示されます)。
ズームアウト時にも同じことが起こります。
写真は自分のために話します。
写真が長すぎるため、縦スクロールバーが表示されます。
スクロールバーが表示されません。同じ状態の垂直なものを除いて。
ズームアウトすると、同じことが分かります。
So.どのようにしてズーミングに合わせてバーを設定できますか?トラックパッドで画像を「移動」できるようにしたい。 (スクロールバーは、マルチタッチジェスチャーで実行されている、それが動作します。)
はここに私のコードの一部です:
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);
}
はどうもありがとうございました。もし私が何かを忘れてしまったら、確認や他の情報を頼むことをためらってはいけません。
また、 'imageView.setSmooth(true);を使用してください。 – GOXR3PLUS