JavaFx:在表格单元格中显示图标

JavaFx:在表格单元格中显示图标,javafx,Javafx,我已指定下表列单元格: 公共类TableCellWithImage扩展了TableCell{ 私有最终图像查看图像; 公共TableCellWithImage(){ //将ImageView添加为图形以显示它 //添加到单元格中的文本 image=newImageView(新图像(getClass().getResourceAsStream(“/eyes.png”)); 图像。设置宽度(24); 图像。设置高度(24); image.setpreservedratio(真); 设置图形(图像);

我已指定下表列单元格:

公共类TableCellWithImage扩展了TableCell{
私有最终图像查看图像;
公共TableCellWithImage(){
//将ImageView添加为图形以显示它
//添加到单元格中的文本
image=newImageView(新图像(getClass().getResourceAsStream(“/eyes.png”));
图像。设置宽度(24);
图像。设置高度(24);
image.setpreservedratio(真);
设置图形(图像);
设置最小高度(70);
}
@凌驾
受保护的void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
if(空| |项==null){
//设置为空单元格的外观
setText(空);
设置图形(空);
}否则{
setText(项目);
设置图形(图像);
}
}
}
要应用它,我使用

content_column_.setCellFactory(new Callback<TableColumn<DbEntry, String>, TableCell<DbEntry, String>>() {
    @Override
    public TableCell<DbEntry, String> call(TableColumn<DbEntry, String> param) {
        return new TableCellWithImage<>();
    }
});
content\u column.setCellFactory(新回调(){
@凌驾
公共TableCell调用(TableColumn参数){
返回新的TableCellWithImage();
}
});

如何在单元格内对齐图形图像和文本?我希望在右角放置一个图像,并且只有在鼠标悬停时才可见。

这里是制作技巧的最终解决方案

public class TableCellWithImage<T> extends TableCell<T, String> {
    private final ImageView image;
    BooleanProperty is_image_visible_ = new SimpleBooleanProperty( false );

    public TableCellWithImage() {
        // add ImageView as graphic to display it in addition
        // to the text in the cell
        image = new ImageView( new Image( getClass().getResourceAsStream("/eyes.png")));
        image.setFitWidth(24);
        image.setFitHeight(24);
        image.setPreserveRatio(true);

        setGraphic(image);
        setMinHeight(70);

        setGraphicTextGap(10);
        setContentDisplay(ContentDisplay.RIGHT);

        setOnMouseEntered(mouseEvent -> {
            is_image_visible_.set(true);
        });

        setOnMouseExited(mouseEvent -> {
            is_image_visible_.set(false);
        });

        image.visibleProperty().bind(is_image_visible_);
    }

    @Override
    protected void updateItem(String item, boolean empty) {
        super.updateItem(item, empty);

        if (empty || item == null) {
            // set back to look of empty cell
            setText(null);
            setGraphic(null);
        } else {
            setText(item);
            setGraphic(image);
        }
    }
}
公共类TableCellWithImage扩展了TableCell{
私有最终图像查看图像;
BooleanProperty是_image_visible_uu=新的SimpleBoleAnProperty(false);
公共TableCellWithImage(){
//将ImageView添加为图形以显示它
//添加到单元格中的文本
image=newImageView(新图像(getClass().getResourceAsStream(“/eyes.png”));
图像。设置宽度(24);
图像。设置高度(24);
image.setpreservedratio(真);
设置图形(图像);
设置最小高度(70);
设定间隙(10);
setContentDisplay(ContentDisplay.RIGHT);
setOnMouseEntered(mouseEvent->{
图像是否可见?设置为真;
});
setOnMouseExited(mouseEvent->{
图像是否可见?设置是否为假;
});
image.visibleProperty().bind(图像是否可见);
}
@凌驾
受保护的void updateItem(字符串项,布尔值为空){
super.updateItem(项,空);
if(空| |项==null){
//设置为空单元格的外观
setText(空);
设置图形(空);
}否则{
setText(项目);
设置图形(图像);
}
}
}

自定义单元格,一如既往;)。。在悬停状态下使用自定义css也可以。无关:公开显示代码时,请遵守java命名约定,请给我一个如何自定义单元格的代码片段好吗?这不在本网站的范围内-有足够多的教程。。完成一个,当遇到困难时,拿一个…好的,为我的问题向前迈进一步。现在我得到了一个图像和文本。如何设置它的对齐方式?表面上的问题是:您的意思是什么(除了标签;)的java文档之外),但这并不能解决要求:学习如何将侦听器附加到单元格(与每个节点相同)或如何使用内置css支持(如果我理解正确,您希望悬停)