gpt4 book ai didi

JavaFX 使用 CellFactory 将图像放入 TableView

转载 作者:行者123 更新时间:2023-11-30 07:02:19 24 4
gpt4 key购买 nike

正如标题所示,我需要通过设置 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com