将 ImageView 装入 TreeTableCell
Fitting an ImageView into a TreeTableCell
我正在使用 JFXTreeTableView
,它有一个显示图像的列。该列的构造如下:
JFXTreeTableColumn<MyLog, ImageView> statusColumn = new JFXTreeTableColumn<>("Status");
statusColumn.setCellValueFactory((TreeTableColumn.CellDataFeatures<MyLog, ImageView> param) -> {
return param.getValue().getValue().statusImage;
});
class MyLog
看起来像这样:
public class MyLog extends RecursiveTreeObject<MyLog> {
// more properties...
public ObjectProperty<ImageView> statusImage = new SimpleObjectProperty<ImageView>();
public MyLog(String imagePath)
{
statusImage.set(new ImageView(new Image(MyProject.class.getResourceAsStream(imagePath))));
}
}
我要显示的图片是这张:
但是,图像没有正确放入单元格中。这是 table 的样子:
如何在不修改图像本身的情况下使图像适合单元格?
您应该将要显示的数据 (Image
) 及其显示方式 (ImageView
) 分开。
这是通过修改 MyLog
的 statusImage
属性 以包含类型 Image
并使用 cellFactory
returns TreeTableCell
使用 ImageView
显示图像。
public class MyLog extends RecursiveTreeObject<MyLog> {
// more properties...
public final ObjectProperty<Image> statusImage;
public MyLog(String imagePath) {
this(new Image(MyProject.class.getResourceAsStream(imagePath)));
}
/**
* Constructor for passing Image objects.
* (Could be helpful to reuse Images to reduce the footprint.)
*/
public MyLog(Image statusImage) {
this.statusImage = new SimpleObjectProperty(statusImage);
}
}
statusColumn.setCellFactory(column -> new JFXTreeTableCell<MyLog, Image>() {
private final ImageView imageView;
{
imageView = new ImageView();
imageView.setFitWidth(20);
imageView.setFitHeight(20);
setGraphic(imageView);
}
@Override
protected void updateItem(Image item, boolean empty) {
super.updateItem(item, empty);
imageView.setImage(item);
}
});
我正在使用 JFXTreeTableView
,它有一个显示图像的列。该列的构造如下:
JFXTreeTableColumn<MyLog, ImageView> statusColumn = new JFXTreeTableColumn<>("Status");
statusColumn.setCellValueFactory((TreeTableColumn.CellDataFeatures<MyLog, ImageView> param) -> {
return param.getValue().getValue().statusImage;
});
class MyLog
看起来像这样:
public class MyLog extends RecursiveTreeObject<MyLog> {
// more properties...
public ObjectProperty<ImageView> statusImage = new SimpleObjectProperty<ImageView>();
public MyLog(String imagePath)
{
statusImage.set(new ImageView(new Image(MyProject.class.getResourceAsStream(imagePath))));
}
}
我要显示的图片是这张:
但是,图像没有正确放入单元格中。这是 table 的样子:
如何在不修改图像本身的情况下使图像适合单元格?
您应该将要显示的数据 (Image
) 及其显示方式 (ImageView
) 分开。
这是通过修改 MyLog
的 statusImage
属性 以包含类型 Image
并使用 cellFactory
returns TreeTableCell
使用 ImageView
显示图像。
public class MyLog extends RecursiveTreeObject<MyLog> {
// more properties...
public final ObjectProperty<Image> statusImage;
public MyLog(String imagePath) {
this(new Image(MyProject.class.getResourceAsStream(imagePath)));
}
/**
* Constructor for passing Image objects.
* (Could be helpful to reuse Images to reduce the footprint.)
*/
public MyLog(Image statusImage) {
this.statusImage = new SimpleObjectProperty(statusImage);
}
}
statusColumn.setCellFactory(column -> new JFXTreeTableCell<MyLog, Image>() {
private final ImageView imageView;
{
imageView = new ImageView();
imageView.setFitWidth(20);
imageView.setFitHeight(20);
setGraphic(imageView);
}
@Override
protected void updateItem(Image item, boolean empty) {
super.updateItem(item, empty);
imageView.setImage(item);
}
});