加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在JavaFX中的所有表格单元格上设置工具提示

发布时间:2020-12-15 04:48:27 所属栏目:Java 来源:网络整理
导读:我的应用程序包含一个TableView.根据每行中特定单元格的值,通过为此列设置具有setCellFactory的自定义单元格工厂来更改行样式.这很好用. 现在我想添加一个工具提示,使用setTooltip()没什么大不了的.但是,应为表中的每个单元格设置此工具提示,而不仅仅是为其
我的应用程序包含一个TableView.根据每行中特定单元格的值,通过为此列设置具有setCellFactory的自定义单元格工厂来更改行样式.这很好用.

现在我想添加一个工具提示,使用setTooltip()没什么大不了的.但是,应为表中的每个单元格设置此工具提示,而不仅仅是为其指定的列.我该如何实现呢?

解决方法

设置表后(即创建并添加列,并在所有列上设置单元工厂),您可以“装饰”列的单元工厂:

private <T> void addTooltipToColumnCells(TableColumn<TableDataType,T> column) {

    Callback<TableColumn<TableDataType,T>,TableCell<TableDataType,T>> existingCellFactory 
        = column.getCellFactory();

    column.setCellFactory(c -> {
        TableCell<TableDataType,T> cell = existingCellFactory.call(c);

        Tooltip tooltip = new Tooltip();
        // can use arbitrary binding here to make text depend on cell
        // in any way you need:
        tooltip.textProperty().bind(cell.itemProperty().asString());

        cell.setTooltip(tooltip);
        return cell ;
    });
}

这里只是将TableDataType替换为您用于声明TableView的任何类型,即假定您拥有

TableView<TableDataType> table ;

现在,在创建了列,将它们添加到表中并设置所有单元工厂之后,您只需要:

for (TableColumn<TableDataType,?> column : table.getColumns()) {
    addTooltipToColumnCells(column);
}

或者如果您更喜欢“Java 8”方式:

table.getColumns().forEach(this::addTooltipToColumnCells);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读