Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在JavaFX表格的每个单元格上设置工具提示?_Java_Tooltip_Render_Javafx 2_Cell - Fatal编程技术网

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

如何在JavaFX表格的每个单元格上设置工具提示?,java,tooltip,render,javafx-2,cell,Java,Tooltip,Render,Javafx 2,Cell,我是JavaFX新手。我已经创建了一个表视图,看起来像附加的图像 我想在鼠标悬停时在表格的每个单元格上显示一个工具提示。我已经设置了两个CellFactory;一个用于在第一列中显示复选框,另一个用于在第二列中显示图像 因此,显示工具提示不得影响这两个渲染列。是否有任何方法可以在鼠标悬停时在表格的每个单元格上显示工具提示,并且不应影响其他单个列单元格的渲染 只需创建工具提示并安装到所需的节点上即可 Cell c = new Cell(); Tooltip.install(c, n

我是JavaFX新手。我已经创建了一个
表视图
,看起来像附加的图像

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

因此,显示工具提示不得影响这两个渲染列。是否有任何方法可以在鼠标悬停时在表格的每个单元格上显示工具提示,并且不应影响其他单个列单元格的渲染


只需创建工具提示并安装到所需的节点上即可

    Cell c = new Cell();
    Tooltip.install(c, new Tooltip("text"));

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

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("Live is short, make most of it..!"));
          }
       };
    });
TableColumn Name col=新的TableColumn(“名称”);
工厂名称
(
列->
{
返回新的TableCell()
{
@凌驾
受保护的void updateItem(字符串项,布尔值为空)
{
super.updateItem(项,空);
setText(项目);
设置工具提示(新工具提示(“Live很短,请充分利用它…”);
}
};
});

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

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

someColumn.setCellFactory(TooltippedTableCell.forTableColumn());

我不清楚“隐藏渲染”是什么意思。为什么工具提示(这是一个单独的阶段)应该隐藏TableView中的节点?你能发布一个小的,自我执行的应用程序来显示这个问题吗?否则,请重新表述问题。对于第1列和第2列以外的其他列,请使用其他单元格工厂。在此单元格工厂中,添加工具提示控件以显示单元格值。@Sebastian感谢您的回复。我已经更新了我的上述问题。问题是-我不希望这两个列单元格渲染器(复选框和图像)在显示工具提示时受到影响,因为我看到了几个显示工具提示的示例,在这些示例中,它们将单元格工厂设置为渲染器工具提示,因此如果我需要为每个列设置渲染器,则复选框和图像的渲染器可能会受到影响。很抱歉,我是javafx新手。简单地说,我想要单元上的工具提示。@AshishPancholi单元工厂应用于列。每个表列都有自己的单元格工厂,即使您没有设置默认的单元格工厂,也会使用默认的单元格工厂。正如你所说的,你已经为第一和第二栏写了单元工厂。为其他列再编写一个公共单元格工厂(包含工具提示)。单元格工厂将只影响您通过
column.setCellFactory()
@AshishPancholi AFAIK no设置的列。除默认单元格工厂外,每个自定义行为都需要自定义单元格工厂。您可以根据未来的需要使用继承。例如,编写扩展API表格单元格的“tooltipable”表格单元格。然后编写“新特性”表格单元格,扩展“工具提示”表格单元格。这是一个非常好的解决方案,但是,需要进行一些调整,以使其适用于非字符串单元格项。但无论如何,谢谢!谢谢,@rapasoft。您是否尝试传入
StringConverter
;这不起作用吗?我刚刚意识到有一种方法可以传递
StringConverter
:)。但无论如何,我不能使用绑定到特定类型(或类型父级)的
StringConverter
,因为存在项的自定义实例(例如编号、对象等),但我始终能够对它们调用
String.valueOf(…)
,这就足够了。至少我希望如此,我是JavaFX noob;)