如何在 Java SWT 中添加 TableViewer 单元格的工具提示



我有一个TableViewer,其中每行代表不同的值。字符串有点长,我希望当我将鼠标悬停在特定单元格上时,应该会弹出一个工具提示,其中包含来自单元格的信息。

我写了这段代码,但工具提示没有显示,getToolTipText方法永远不会执行:

columnMessage.setLabelProvider(new ColumnLabelProvider()
{
    @Override
    public void update(ViewerCell cell)
    {
       // ... as now
    }
    @Override
    public String getToolTipText(Object element)
    {
       return getText(element);
    }
});

对于TableViewer添加一个调用以启用工具提示:

ColumnViewerToolTipSupport.enableFor(viewer);

其中viewer是您的表查看器。

这要求表的标签提供程序派生自CellLabelProvider(或派生自 ColumnLabelProvider 的类之一)。

然后,可以重写标签提供程序中的许多方法来控制工具提示:

public String getToolTipText(Object element)

以返回文本。

public Image getToolTipImage(Object object)
public Color getToolTipBackgroundColor(Object object)
public Color getToolTipForegroundColor(Object object)
public Font getToolTipFont(Object object)
public int getToolTipStyle(Object object)

用于图像、颜色、字体和样式

public Point getToolTipShift(Object object)
public int getToolTipTimeDisplayed(Object object)
public int getToolTipDisplayDelayTime(Object object)

以控制工具提示偏移及其显示时间。

所有这些都有默认值,因此getToolTipText是您真正需要覆盖的唯一默认值。

因此,对于您的代码,您可以执行以下操作:

columnMessage.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public void update(ViewerCell cell) {
            ... as now
        }
        @Override
        public String getToolTipText(Object element)
        {
           // TODO return the tool tip text for 'element'
        }
        @Override
        public String getText(Object element)
        {
          // TODO get text from 'element'
        }
    });
}

最新更新