Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ExecutorService exec = Executors.newCachedThreadPool();
- TableColumn<Model, File>= new TableColumn<>("");
- colImage.setPrefWidth(64);
- colImage.setCellFactory(param -> {
- //Set up the ImageView
- final ImageView imageview = new ImageView();
- imageview.fitWidthProperty().bind(Bindings.subtract(colImage.widthProperty(), 7));
- imageview.setPreserveRatio(true);
- //Loading task
- ObjectProperty<Task<Image>> loadingTask = new SimpleObjectProperty<>();
- //Set up the Table
- TableCell<Model, File> cell = new TableCell<Model, File>() {
- @Override
- public void updateItem(File item, boolean empty) {
- //Stop already running image fetch tast
- if (loadingTask.get() != null &&
- loadingTask.get().getState() != Worker.State.SUCCEEDED &&
- loadingTask.get().getState() != Worker.State.FAILED) {
- loadingTask.get().cancel();
- }
- loadingTask.set(null);
- //Load image if not null
- if (empty || item == null) {
- imageview.setVisible(false);
- } else {
- imageview.setVisible(true);
- Task<Image> task = new Task<Image>() {
- @Override
- public Image call() throws Exception {
- System.out.println("fetch image");
- Image image = SwingFXUtils.toFXImage(ImageIO.read(item), null);
- return image;
- }
- };
- loadingTask.set(task);
- task.setOnSucceeded(event -> {
- imageview.setImage(task.getValue());
- System.out.println("got image");
- });
- exec.submit(task);
- }
- }
- };
- // Attach the imageview to the cell
- cell.setGraphic(imageview);
- return cell;
- });
- colImage.setCellValueFactory(cellData -> cellData.getValue().fileProperty());
- tableView.getColumns().add(0, colImage);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement