После того как таблица будет создана (т.е. столбцы создаются и добавляются, и клеточные фабрики устанавливаются на все столбцы), вы можете «украсить» столбцы Клеточные фабрики:
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);
Одна небольшая проблема с этим состоит в том, что он показывает «нуль» для пустых ячеек, которые ISN» t очень элегантный (особенно для нетехнических пользователей). Один из способов преодоления этого - связать свойство 'tooltip' с привязкой, которая учитывает статус ячейки:' cell.tooltipProperty(). Bind (Bindings.when (Bindings.or (cell.emptyProperty(), cell.itemProperty () .isNull())), затем ((Tooltip) null) .otherwise (tooltip)); ' – Itai
Только то, что я искал, спасибо! –