我問了一個非常類似的問題,但我最終使用了圖像而不是改變顏色。JFace TableViewer - 爲表格中的所有單元格設置字體顏色
我希望單元格中的所有文本都是深灰色的。我知道你必須分配每一列。但我不知道該怎麼做。
這是我的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;
}
}
}
});
嘛,你知道,你的表有多少列了,不是嗎?你是什麼意思:「_如何設置列名_」?也許我的替代解決方案對你來說是更好的選擇,因爲它涉及的代碼更少。 – Baz
我指的是列標題和列寬。我真的很想學習如何使用Switch。例如,第1列標題應該是寬度爲100的itemID,第2列標題應該寬度爲50 – jkteater
此外,如果使用第一個替代方法,則只需爲「ColumnLabelProvider」創建一個新類並使用col .setLabelProvider(new YourColumnLabelProvider())'。這將減少冗餘代碼。 – Baz