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

标签 java swt jface

我有一个 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'
        }
    });
}

关于java - 如何在 Java SWT 中为 TableViewer 单元格添加工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29646389/

相关文章:

java - JFace LabelProvider : How can I know the header/name of a column within a LabelProvider?

java - ResourceBundle - 属性文件继承

java - MyBatis 插入关联

c# - SSH session 捕获

java - ExpandBar 与 GridLayout 一起工作不正确

java - 如何捕获 SWT 事件循环中的未经检查的异常

java - 如何制作包含 DLL 文件的 JAR 文件?

java - 带引号的东西在 Java 中似乎不起作用

java - 显示 WizardPage 后执行的操作

java - Listener 类对 TableViewer 没有影响?