是否可以根据其中一列中的值更改行的字体颜色?
我的表中有一列显示状态。列的值将为“失败”或“成功”。
如果是成功,我希望行字体为绿色。如果状态等于Failed,我希望行字体为红色。
这是可能的,如果是这样我会把逻辑放在哪里。
修改
这是我的Table Viewer代码,我不打算显示所有列,只是一对
private void createColumns() {
String[] titles = { "ItemId", "RevId", "PRL", "Dataset Name", "Printer/Profile" , "Success/Fail" };
int[] bounds = { 100, 75, 75, 150, 200, 100 };
TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0], 0);
col.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
if(element instanceof AplotResultsDataModel.ResultsData) {
return ((AplotResultsDataModel.ResultsData)element).getItemId();
}
return super.getText(element);
}
});
col = createTableViewerColumn(titles[1], bounds[1], 1);
col.setLabelProvider(new ColumnLabelProvider() {
public String getText(Object element) {
if(element instanceof AplotResultsDataModel.ResultsData) {
return ((AplotResultsDataModel.ResultsData)element).getRevId();
}
return super.getText(element);
}
}); --ETC
答案 0 :(得分:2)
检查元素状态并返回您要使用的颜色
Viewer implementation
ColumnLabelProvider
public Color getForeground(Object element)
表格使用
TableItem
setForeground(Color color)
setForeground(int index, Color color)
当您对每列使用ColumnLabelProvider
时,需要覆盖每列的getForeground(Object元素)。另一种方法是,不要为每列添加ColumnLabelProvider
。
将LabelProvider
设置为TableViewer
级别。
TableViewer.setLabelProvider(ColumnLabelProvider labelProvider)
。由于您没有在列级别设置标签提供程序,因此tableviewer会从TableViewer
级别设置的标签提供程序获取每个单元格的显示文本,图像,字体,背景,前景等。