JavaFX 使用 CellFactory 将图像放入 TableView

标签 java javafx tableview

正如标题所示,我需要通过设置 CellFactory 将图像插入到 TableView 的列中但是通过FileChooser获取路径的图像没有显示在表格上。但是,如果我选择第一行,它会突出显示,就好像那里有东西一样。 这是我的 Controller 类中的代码片段:

@FXML
private void initialize()
{
    TableColumn thumbNail = new TableColumn("Photo");
    thumbNail.setCellValueFactory(new PropertyValueFactory("image"));
    thumbNail.setPrefWidth(200);

    thumbNail.setCellFactory(new Callback<TableColumn<Image, Photo>, TableCell>()
    {
        @Override
        public TableCell<Image, Photo> call(TableColumn<Image, Photo> param)
        {
            TableCell<Image, Photo> cell = new TableCell<Image, Photo>()
            {
                ImageView img = new ImageView();
                @Override
                public void updateItem(Photo item, boolean empty)
                {
                    if(item != null)
                    {
                        HBox box = new HBox();
                        box.setSpacing(10);
                        VBox vbox = new VBox();
                        vbox.getChildren().add(new Label("THIS"));
                        vbox.getChildren().add(new Label("DATE"));

                        img.setFitHeight(50);
                        img.setFitWidth(50);
                        img.setImage(new Image(new File(item.getPath()).toURI().toString()));

                        box.getChildren().addAll(img, vbox);
                        setGraphic(box);
                    }
                }
            };
            return cell;
        }
    });
    photoView.getColumns().addAll(thumbNail);
    loadScreen();
}

// Load the album contents.
public void loadScreen()
{
    if(imgList != null)
    {
        imgList.clear();
    }
    if(currUser != null && thisAlbum.getPhotoList() != null )
    {
        imgList = FXCollections.observableArrayList(thisAlbum.getPhotoList());
        //FXCollections.sort(obsList);

        photoView.setItems(imgList);
    }
    if(imgList == null)
    {
        photoView.setPlaceholder(new Label("No Photos In List"));
    }

我不确定出了什么问题,或者应该尝试什么来解决这个问题。如有任何帮助,我们将不胜感激!

最佳答案

确保图片路径正确。否则图像单元将不会显示图片(并且令人惊讶的是不会抛出异常)。

PS:我发现了您的代码的稍微修改版本(可能是您的来源之一): TableView Cell Modify in JavaFX .

关于JavaFX 使用 CellFactory 将图像放入 TableView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40713629/

相关文章:

java - 如何自动格式化Java代码

java - findViewById(R.id.bAdd) 错误

java - Getter正确返回,然后变为null

ios - 在 Swift 2.x 和 iOS9 中以编程方式关闭 searchBar

swift - 如何计算 UITableView 单元格中的总值?

swift - 使用来自 firebase 的数据填充 "initial view"的 tableviewcontroller

java - 尝试 POST 到 Spring 端点的 400 错误请求

java - 从动态库调用 jni 时 JVM 堆内存不足

JavaFX - 摆脱 `CustomMenuItem` 蓝色高亮?

java - 如何修复 Kotlin 中的重载分辨率歧义(无 lambda)?