如何在Java SWT中为TableViewer单元添加工具提示
我有一个表,每行代表不同的值。字符串有点长,我想当我将鼠标悬停在特定单元格上时,工具提示应弹出来自单元格的信息。
I have a table where each row represents different values. The string being kinda long, I would like that when I hover the mouse over the specific cell, a tooltip should pop-up with the information from the cell.
我写的此代码但工具提示未被替换, getToolTipText
方法永远不会执行:
I wrote this code but tooltip is not displaied and getToolTipText
method is never executed:
columnMessage.setLabelProvider(new ColumnLabelProvider() {
@Override
public void update(ViewerCell cell) {
// ... as now
}
@Override
public String getToolTipText(Object element)
{
return getText(element);
}
});
对于 TableViewer
添加调用以启用工具提示:
For TableViewer
add a call to enable tool tips with:
ColumnViewerToolTipSupport.enableFor(viewer);
其中 viewer
是您的表格查看器。
where viewer
is your table viewer.
这要求表的标签提供者派生自 CellLabelProvider
(或派生的类之一)从那里如 ColumnLabelProvider
)。
This requires that your label provider(s) for the table are derived from CellLabelProvider
(or one of the classes derived from that such as ColumnLabelProvider
).
然后你可以覆盖标签提供程序中的许多方法来控制工具提示:
You can then override a number of methods in the label provider to control the tool tips:
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)
图片,颜色,字体和样式
for images, colors, fonts and style
public Point getToolTipShift(Object object)
public int getToolTipTimeDisplayed(Object object)
public int getToolTipDisplayDelayTime(Object object)
控制工具尖端偏移量,以及何时显示。
to control the tool tip offset, and when it is displayed.
所有这些都有默认值,因此 getToolTipText
是唯一真正需要覆盖的。
There are defaults for all of these so getToolTipText
is the only one you really need to override.
因此,对于您的代码,您可以这样做:
So for your code you might do:
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'
}
});
}