jkt*_*ter 1 java fonts swt jface
我问了一个非常相似的问题,但我最终使用了图像而不是改变颜色.
我希望单元格中的所有文本都是深灰色的.我知道你必须分配每一列.但我不知道怎么做.
这是我的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();
}
});
Run Code Online (Sandbox Code Playgroud)
如何更改上面的代码以将字体颜色设置为深灰色?
编辑
如果我使用的是开关,它怎么知道我有多少列?另外我如何设置列名?以下是我现在的设置
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;
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我会使用的方法update(ViewerCell cell)的ColumnLabelProvider替代getText().然后你可以打电话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 ...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
col.getColumn().setWidth(150);
col.getColumn().setText("ItemId");
col.setLabelProvider(new ColorColumnLabelProvider());
Run Code Online (Sandbox Code Playgroud)
由于我switch是列索引,您可以将其ColorColumnLabelProvider用于所有列.
不要忘记在某处处理颜色.
如果您使用ColorConstants的Draw2D的,你不需要处理它们.
在你的情况下ColorConstants.darkGray会做的工作.
替代方案:
您还可以定义一个ColumnLabelProvider实现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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4626 次 |
| 最近记录: |