I have asked a very similar question, but I ended up using images instead of changing the color.
I want all the text in the cells to be dark grey. I understand that you have to assign each column. But I do not how to do it.
This is one of my columns in my 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();
}
});
How would I change the above code to incorporate setting the font color to dark gray?
EDIT
If I am using the switch, how does it know how many columns I have? also how do I set the column names? Here is how I have it set up right now
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;
}
}
}
});
I would use the method update(ViewerCell cell)
of the ColumnLabelProvider
instead of getText()
. Then you can call ViewerCell#setForeground(Color color)
:
public class ColorColumnLabelProvider extends ColumnLabelProvider {
@Override
public void update(ViewerCell cell)
{
Object element = cell.getElement();
if(element instanceof AplotResultsDataModel.ResultsData)
{
AplotResultsDataModel.ResultsData p = (AplotResultsDataModel.ResultsData) element;
cell.setForeground(YOUR_COLOR);
switch(cell.getColumnIndex())
{
case 0:
cell.setText(p.YOUR_FIRST_TEXT);
break;
case 1:
cell.setText(p.YOUR_SECOND_TEXT);
break;
case ...
}
}
}
}
Then use:
col.getColumn().setWidth(150);
col.getColumn().setText("ItemId");
col.setLabelProvider(new ColorColumnLabelProvider());
Since I switch
the column index, you can use this ColorColumnLabelProvider
for all your columns.
Don't forget to dispose the color somewhere.
If you use ColorConstants
of Draw2d , you don't need to dispose them.
In your case ColorConstants.darkGray
would do the job.
ALTERNATIVE :
You can also define a ColumnLabelProvider
that implements IColorProvider
:
public class ColorColumnLabelProvider extends ColumnLabelProvider implements IColorProvider {
@Override
public Color getBackground(Object element) {
return null;
}
@Override
public Color getForeground(Object element) {
return YOUR_COLOR;
}
@Override
public String getText(Object element) {
AplotResultsDataModel.ResultsData p = (AplotResultsDataModel.ResultsData) element;
return p.getPrinterProfile();
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.