如何在JavaFX表鼠标悬停的每个单元格上设置工具提示?

2022-09-02 13:33:26

我是JavaFX的新手。我创建了一个看起来像附加图像的图像。TableView

我想在将鼠标悬停在表格的每个单元格上显示工具提示。我已经设置了两个;一个用于在第一列中显示复选框,另一个用于在第二列中显示图像。CellFactory

因此,显示工具提示不得影响这两个呈现的列。有没有办法在鼠标悬停时在表格的每个单元格上显示工具提示,并且不会影响其他单个列单元格的呈现。

Screenshot of table I'm trying to replicate


答案 1

以下是我在某个列的单元格中需要工具提示时所做的工作:

TableColumn<Person, String> nameCol = new TableColumn<Person, String>("Name");

nameCol.setCellFactory
 (
   column ->
    {
      return new TableCell<Person, String>()
       {
         @Override
         protected void updateItem(String item, boolean empty)
          {
             super.updateItem(item, empty);
             setText( item );
             setTooltip(new Tooltip("Life is short, make most of it..!"));
          }
       };
    });

答案 2

Tooltip in action

这是一个通用的解决方案,如果有人正在寻找简单的东西。它遵循与其他自定义单元工厂相同的约定。

只需创建一个新类并将TooltippedTableCell粘贴到其中即可;然后设置所需列的自定义单元格工厂,如下所示:

someColumn.setCellFactory(TooltippedTableCell.forTableColumn());