【问题标题】:How to add a tooltip for TableViewer cell's in Java SWT如何在 Java SWT 中为 TableViewer 单元格添加工具提示
【发布时间】:2015-06-21 04:29:52
【问题描述】:

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

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

columnMessage.setLabelProvider(new ColumnLabelProvider()
{
    @Override
    public void update(ViewerCell cell)
    {
       // ... as now
    }

    @Override
    public String getToolTipText(Object element)
    {
       return getText(element);
    }
});

【问题讨论】:

    标签: java swt jface


    【解决方案1】:

    对于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'
            }
        });
    }
    

    【讨论】:

    • TableViewerColumn 不是标签提供者,请再看一下您的代码或向我们展示。您应该在该列上调用setLabelProvider
    • 我已经编辑了我的问题并提供了代码。请检查一下。
    • 我已经编辑了我的问题并提供了更新的代码。我仍然无法从列中获取文本。
    • 你有没有调用 ColumnViewerToolTipSupport.enableFor
    • 这是标签提供程序中默认的getText 方法——如果你要使用getText,你需要覆盖它并返回你想要的值。
    猜你喜欢
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-07
    相关资源
    最近更新 更多