作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表格查看器,并且创建了一个上下文菜单,现在右键单击该行,我可以选择:为所选行着色。菜单命令链接到我的插件项目中的一个类。我想选择该行,然后右键单击并单击上下文菜单选项:为所选行着色,然后使用此命令为该行的每个单元格中包含的所有文本着色,例如红色。
public class ShowSelected extends AbstractHandler {
@SuppressWarnings("unchecked")
public Object execute(ExecutionEvent event) throws ExecutionException {
//here should be my piece of code
return null;
}
}
如何选择行并为该行的每个单元格中的文本着色?我每行有 5 个单元格。
最佳答案
选择一行:
TableViewer viewer = .... get your viewer
RowData rowData = .... get the model row data that you want to select
viewer.setSelection(new StructuredSelection(rowData));
要为行着色,请让您的标签提供程序实现 IColorProvider
(除了它实现的其他任何内容之外)。您现在必须实现:
@Override
public Color getForeground(Object element)
{
// TODO return foreground color or null
}
@Override
public Color getBackground(Object element)
{
// TODO return background color or null
}
element
参数是需要颜色的模型行数据。
您可以使用以下方法让表查看器向标签提供程序请求更新的颜色:
viewer.update(rowData);
关于Color
的注释 - 您创建的任何Color
对象在不再需要时都必须被丢弃。您应该尽量减少创建的 Color
对象的数量。
如果您使用的是ColumnLabelProvider
,那么它已经实现了IColorProvider
,因此您只需要覆盖getForeground
/getBackground
。例如:
@Override
public Color getForeground(Object element)
{
RowData rowData = (RowData)element;
// TODO if rowData should have a color return it, otherwise return null
}
关于java - 如何为选定行着色 TableViewer Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25742692/
我是一名优秀的程序员,十分优秀!