我的应用程序包含一个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 ;
Now, after您已经创建了列,将它们添加到表中,并设置了它们的所有单元工厂,您只需要:
for (TableColumn<TableDataType, ?> column : table.getColumns()) {
addTooltipToColumnCells(column);
}
或者如果您更喜欢“Java 8”方式:
table.getColumns().forEach(this::addTooltipToColumnCells);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)