Я работаю над приложением, созданным с помощью JavaFX и CSS. Я достиг точки, где мне нужно отобразить изображение внутри scrollPane (находящегося внутри GridPane). Мне нужно увеличить изображение. Мне удалось использовать мультитач-функции моего трекпада, как и предполагалось.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