4

我在这里遇到了一个奇怪的情况,我需要帮助。

我使用TableViewer. 当您什么都不做时,您会看到以下行为:当单元格的文本太大时,会在短暂等待后出现显示完整文本的工具提示。这是正常行为,我猜本机控件会绘制这些工具提示。

现在我添加了我自己的自定义工具提示,使用

ColumnViewerToolTipSupport.enableFor( tableViewer, ToolTip.NO_RECREATE );

getToolTipText()并使用标签提供者的方法传递(不同的)文本。

那行得通-几乎。我遇到了一个问题:有时(不是所有时候!)首先,会出现本机工具提示,然后不久我的自定义工具提示就会被绘制在它上面,如下面的屏幕截图所示:

显示两个工具提示的屏幕截图

我不知道如何有效地禁用每个单元格想要绘制的本机工具提示。它的样子丑得要死……

对我有什么线索吗?

4

3 回答 3

4

您可以像这样有效地禁用本机表格工具提示:

viewer.getTable().setToolTipText("");

也可以看看...

以供参考。

于 2015-03-11T16:03:07.633 回答
2

我想补充一下@Jörg 的回答:

将表格的工具提示设置为空字符串后,我仍然偶尔会看到两个工具提示,其中有一个多列表,其中一些列有工具提示,而有些则没有。

因此,原因是,CellLabelProvider没有工具提示的列的 snull从它们的getToolTipText()方法(默认值)和false它们的useNativeToolTip()(也是默认值)返回。这反过来又导致表格的工具提示被重置为null. (参见ColumnViewerToolTipSupport中的第 174 行)。

我的第一次尝试是让标签提供者从getToolTipText(). 虽然这解决了重复工具提示问题,但现在显示了一个空的自定义工具提示(叹气)。但是让useNativeToolTip()return true 最终解决了这个问题。

好吧,几乎,如果将鼠标指针从没有工具提示的列移动到有工具提示的列,则不会显示工具提示。有关解决方法,请参阅此帖子:JFace TableViewer 上的本机工具提示无法正常工作

如果出于某种原因需要非本机工具提示,请确保在返回空字符串useNativeToolTip()时返回 true。getToolTipText()

此处记录适用于 Windows 7,其他平台的行为可能有所不同。

于 2016-06-29T13:25:55.227 回答
1

从您的屏幕截图中我无法确定,但我认为您所看到的实际上并不是两个工具提示。

正在看到一个工具提示(您的自定义提示)。

您看到的另一个“弹出窗口”是“此表格单元格不够宽,无法显示其全部内容,因此我们将向您展示如果我们确实有足够空间将显示的完整文本展示它所有“表本身的特征。

我会提出这实际上是所需行为的概念。允许用户继续“窥视”单元格的全部内容,同时还提供您的自定义工具提示(我确信它传达了与单元格文本本身不同的附加/不同信息),为用户提供了他们可能想要的一切。

如果重叠困扰您(并且我同意这令人不快),您可以通过覆盖CellLabelProvider.getToolTipShift().

如果您想禁用“单元格太窄”的辅助弹出窗口,恐怕我对您没有任何建议;我在周围摸了一会儿,但不知道如何压制它。甚至可能无法做到这一点。

于 2013-01-14T23:08:32.803 回答