我已经使用此代码段为我通过单元格工厂传播的每个tableView单元格创建工具提示:
private <T> void addFileTooltipToCells(TableColumn<FileTableBean,T> column) {
Callback<TableColumn<FileTableBean, T>, TableCell<FileTableBean,T>> existingCellFactory = column.getCellFactory();
column.setCellFactory(c -> {
TableCell<FileTableBean, T> cell = existingCellFactory.call(c);
Tooltip tooltip = new Tooltip();
tooltip.textProperty().bind(cell.itemProperty().asString());
tooltip.setShowDuration(Duration.seconds(30));
tooltip.setStyle("-fx-font-size: 12");
cell.setTooltip(tooltip);
return cell;
});
}
问题是工具提示有时可能包含很多数据,应该多行显示。从这里我发现,应该简单地将工具提示包装在一起,并在必要时设置
。但是,上面仔细复制并经过错误测试的代码段不喜欢这个想法。我尝试过:
tooltip.textProperty().bind("<html>"+cell.itemProperty().asString()+"</html>");
tooltip.setText("<html>"+cell.itemProperty().asString()+"</html>");
首先在IDE中说:不兼容的字符串不能转换为ObservableValue 第二个生成器遵循以下工具提示:“字符串绑定[无效]”:)
在有人开始使用通常的“错误消息说明一切,请阅读”东西之前,我知道可能有一个简单的答案,但是将这些lambda与绑定概念和单元工厂结合在一起,放弃并尝试从此处获得一些指导。
答案 0 :(得分:0)
回答那些面临相同问题的人。您可以使用“常规”绑定,但只需通过定义以下内容即可将工具提示首选项应用于cellfactory创建的每个工具提示:
tooltip.setMaxWidth(750);
tooltip.setWrapText(true);
如果数据短于宽度,则设置最佳宽度将创建带有大量额外空白的工具提示。最大宽度的作用就像一种魅力。下一步可能是使宽度参数动态化,以便它根据载物台分辨率计算最大宽度。