在网上搜索时,我找不到任何提示如何解决以下问题:我有一个包含 TreeView 的 JavaFX 窗格。一开始这个 TreeView 是空的,因此我在 fxml 文件中添加了一个 Tooltip,它建议用户使用鼠标右键来访问上下文菜单。
<TreeView fx:id="requirementsTreeView" prefWidth="1000.0">
<tooltip>
<Tooltip text="Right mouse click to create root requirements" />
</tooltip>
</TreeView>
这工作正常。但是,当鼠标悬停在 TreeView 中的某个项目上时,会显示相同的工具提示 - 换句话说,在 TreeCell 上。因此,我像这样向 TreeCell 添加了不同的 ToolTip
private final class RequirementTreeCell extends TreeCell<UserRequirement> {
@Override
protected void updateItem(UserRequirement userRequirement, boolean empty) {
super.updateItem(userRequirement, empty);
if (!empty && userRequirement != null) {
setText(userRequirement.toString());
setGraphic(getTreeItem().getGraphic());
setContextMenu(getContextMenu(userRequirement));
setTooltip(new Tooltip("Right click to add sub-requirements"));
} else {
setText(null);
setGraphic(null);
setTooltip(null);
setContextMenu(null);
}
}
..
}
但是当鼠标悬停在 TreeCell 上时,仍然会显示 TreeView 中的 ToolTip。当鼠标悬停在 TreeView 的空白区域时,如何使 TreeView 中的 Tooltip 显示出来,如果鼠标悬停在 TreeCell 上,如何显示 TreeCell 的 Tooltip?
先感谢您!!
编辑:我继续测试 TreeView 的功能并添加了更多 TreeCells。事实证明,行为取决于鼠标移动的方向和 TreeCells 的位置。如果鼠标来自 Treeview 区域并移到最后一个 TreeCell 上,我会得到错误的工具提示。如果我将鼠标进一步向上移动,在倒数第二个 TreeCell 上,我会在一段时间后得到正确的工具提示。如果我随后移回最后一个 TreeCell,我将再次获得正确的 ToolTip。听起来像是 Javafx 中的错误?!你怎么看?