【发布时间】:2012-10-01 01:10:08
【问题描述】:
我问了一个非常相似的问题,但我最终使用图像而不是更改颜色。
我希望单元格中的所有文本都为深灰色。我了解您必须分配每一列。但我不知道该怎么做。
这是我在 TableViewer 中的列之一。
col = new TableViewerColumn(this , SWT.NONE);
col.getColumn().setWidth(200);
col.getColumn().setText("Printer/Profile");
col.setLabelProvider(new ColumnLabelProvider() {
@Override
public String getText(Object element) {
AplotResultsDataModel.ResultsData p = (AplotResultsDataModel.ResultsData) element;
return p.getPrinterProfile();
}
});
如何更改上述代码以将字体颜色设置为深灰色?
编辑
如果我使用开关,它如何知道我有多少列? 还有如何设置列名?这是我现在的设置方式
TableViewerColumn col = new TableViewerColumn(this , SWT.NONE);
col.getColumn().setWidth(150);
col.getColumn().setText("ItemId");
col.setLabelProvider(new ColumnLabelProvider() {
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if(element instanceof AplotPDFDataModel.FileNameData)
{
AplotPDFDataModel.FileNameData p = (AplotPDFDataModel.FileNameData) element;
cell.setForeground(ColorConstants.darkGray);
switch(cell.getColumnIndex())
{
case 0:
try {
cell.setText(p.getRev().getStringProperty("item_id"));
}
catch (TCException e) {
e.printStackTrace();
}
break;
case 1:
try {
cell.setText(p.getRev().getStringProperty("item_revision_id"));
}
catch (TCException e) {
e.printStackTrace();
}
break;
case 2:
cell.setText(p.getPRLValue().toString());
break;
case 3:
cell.setText(p.getMarkupValue());
break;
case 4:
cell.setText(p.getFileName());
break;
}
}
}
});
【问题讨论】:
-
嗯,你知道,你的表有多少列,不是吗? “如何设置列名”是什么意思?也许我的替代解决方案对您来说是更好的选择,因为它涉及的代码更改更少。
-
我的意思是列标题和列宽。我真的很想学习如何使用 Switch。例如,第 1 列标题应为 itemID,宽度为 100,第 2 列标题应为 revId,宽度为 50
-
此外,如果您使用第一种替代方法,只需为
ColumnLabelProvider创建一个新类并使用col.setLabelProvider(new YourColumnLabelProvider())。这将减少冗余代码。