Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. ExecutorService exec = Executors.newCachedThreadPool();
  2.  
  3. TableColumn<Model, File>= new TableColumn<>("");
  4. colImage.setPrefWidth(64);
  5. colImage.setCellFactory(param -> {
  6.  
  7. //Set up the ImageView
  8. final ImageView imageview = new ImageView();
  9. imageview.fitWidthProperty().bind(Bindings.subtract(colImage.widthProperty(), 7));
  10. imageview.setPreserveRatio(true);
  11.  
  12. //Loading task
  13. ObjectProperty<Task<Image>> loadingTask = new SimpleObjectProperty<>();
  14.  
  15. //Set up the Table
  16. TableCell<Model, File> cell = new TableCell<Model, File>() {
  17. @Override
  18. public void updateItem(File item, boolean empty) {
  19. //Stop already running image fetch tast
  20. if (loadingTask.get() != null &&
  21. loadingTask.get().getState() != Worker.State.SUCCEEDED &&
  22. loadingTask.get().getState() != Worker.State.FAILED) {
  23.  
  24. loadingTask.get().cancel();
  25. }
  26. loadingTask.set(null);
  27. //Load image if not null
  28. if (empty || item == null) {
  29. imageview.setVisible(false);
  30. } else {
  31. imageview.setVisible(true);
  32. Task<Image> task = new Task<Image>() {
  33. @Override
  34. public Image call() throws Exception {
  35. System.out.println("fetch image");
  36. Image image = SwingFXUtils.toFXImage(ImageIO.read(item), null);
  37. return image;
  38. }
  39. };
  40. loadingTask.set(task);
  41. task.setOnSucceeded(event -> {
  42. imageview.setImage(task.getValue());
  43. System.out.println("got image");
  44. });
  45. exec.submit(task);
  46. }
  47. }
  48. };
  49. // Attach the imageview to the cell
  50. cell.setGraphic(imageview);
  51. return cell;
  52.  
  53. });
  54. colImage.setCellValueFactory(cellData -> cellData.getValue().fileProperty());
  55. tableView.getColumns().add(0, colImage);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement