我在这里遇到了一个奇怪的情况,我需要帮助。
我使用TableViewer
创建了一个相当简单的JFace表。当您不再执行任何操作时,您可以看到以下行为:当单元格的文本太大时,将在短暂等待后显示显示完整文本的工具提示。这是正常的行为,我猜本机控件会绘制这些工具提示。
现在我使用
添加了我自己的自定义工具提示ColumnViewerToolTipSupport.enableFor( tableViewer, ToolTip.NO_RECREATE );
使用标签提供商的getToolTipText()
方法提供(不同的)文本。
这很有效 - 差不多。我遇到了一个问题:有时(并非所有时间!)首先,出现本机工具提示,此后不久我的自定义工具提示就会被绘制出来,如此屏幕截图所示:
我不知道如何有效地禁用每个单元格想要绘制的本机工具提示。这很难看,就像它一样......
对我来说有什么线索吗?
答案 0 :(得分:3)
您可以像这样有效地禁用本机表工具提示:
viewer.getTable().setToolTipText("");
另见......
供参考。
答案 1 :(得分:1)
我无法确定您的屏幕截图,但我不认为您所看到的实际上是两个工具提示。
您 看到一个工具提示(您的自定义工具提示)。
你看到的其他“弹出窗口”是“这个表格单元格不够宽,无法显示其全部内容,因此我们将向您展示完整的文字,我们将显示如果我们确实有足够的空间来显示表格本身的所有“功能。
我提出的想法是,这实际上是理想的行为。允许用户继续“窥视”单元格的全部内容,同时还提供自定义工具提示(我确定传达了比单元格文本本身更多/不同的信息),为用户提供他们可能想要的一切。
如果重叠困扰你(并且我同意这是令人不愉快的),你可以通过覆盖CellLabelProvider.getToolTipShift()
来略微改变自定义工具提示。
如果你想禁用“细胞太窄”的助手弹出,我恐怕对你没有任何建议;我捅了一会儿却想不出怎么压制它。甚至可能无法这样做。
答案 2 :(得分:1)
我想添加到@Jörg's回答:
在将表格的工具提示设置为空字符串之后,我仍然偶尔看到两个工具提示,其中一些列有工具提示,有些列没有。
原因是,没有工具提示的列的CellLabelProvider
s从null
方法(默认)和getToolTipText()
返回false
useNativeToolTip()
}(也是默认值)。反过来,这会导致表格的工具提示重置为null
。 (见ColumnViewerToolTipSupport中的第174行)。
我的第一次尝试是让标签提供者从getToolTipText()
返回一个空字符串。虽然这解决了重复的工具提示问题,但现在显示了一个空的自定义工具提示(叹气)。但让useNativeToolTip()
返回true终于解决了问题。
嗯,差不多,如果将鼠标指针从没有工具提示的列移动到带有工具提示的列,则不会显示工具提示。有关解决方法,请参阅此帖子:Native tooltips on JFace TableViewer not working flawlessly
如果由于某种原因需要非原生工具提示,请确保在useNativeToolTip()
返回空字符串时为getToolTipText()
返回true。
此处采用的注释适用于Windows 7,其他平台可能表现不同。