In my JavaFX application I use Pagination
to show some pictures. Reading the pictures takes much time so I fill an ObservableList<Image>
with placeholder images, which should be replaced by the originals when they are loaded.
Everything works fine, but the only thing is that the current page doesn't get updated when the image is loaded. I have to change the CurrentPageIndex
and change back. Than the right picture is displayed.
For loading the images I've created a Task
, so that I'm able to use the Application during the process.
So my Question is, how is it possible to update the content of the current page?
The PageFactory looks like that:
ImageView imageView = new ImageView();
Image img = images.get(index);
imageView.setImage(img);
imageView.setFitWidth(240);
imageView.setStyle("-fx-background-color: white");
imageView.setPreserveRatio(true);
imageView.setSmooth(true);
imageView.setCache(true);
imageView.setEffect(createShadow(Color.BLACK, false));
VBox pageBox = new VBox();
pageBox.setAlignment(Pos.CENTER);
pageBox.getChildren().add(imageView);
return pageBox;
Here I replace the images (first 2 lines are methods of a framework):
for (int i = 0; i < pageCount; i++) {
PagePainter pp = parser.getPagePainter(i);
BufferedImage buffImg = pp.getImage(200);
fxImages.set(i, SwingFXUtils.toFXImage(buffImg, null));
}