我有一个包含TableViewer的部分。我想不同地为标题标签着色。这就是我目前的做法。
public class UsagePart {
private TableViewer viewer;
@PostConstruct
public void createControls(final Composite parent) {
final TableColumnLayout tableColumnLayout = new TableColumnLayout();
parent.setLayout(tableColumnLayout);
viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
final Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
table.setHeaderForeground(Display.getDefault().getSystemColor(SWT.COLOR_LINK_FOREGROUND));
final TableViewerColumn nameColumn = createTableViewerColumn("Name");
tableColumnLayout.setColumnData(nameColumn.getColumn(), new ColumnWeightData(1, 100, true));
}
private TableViewerColumn createTableViewerColumn(final String title) {
final TableViewerColumn viewerColumn = new TableViewerColumn(viewer, SWT.NONE);
final TableColumn column = viewerColumn.getColumn();
column.setText(title);
column.setResizable(true);
column.setMoveable(true);
return viewerColumn;
}
}
但是这样做,标题的颜色只有在我悬停在它上面时才会改变。此外,每次切换Perspectives / Views时都会重置颜色。
我发现这是由TableColumnLayout引起的。如果没有它,颜色将始终应用,但我的列不会填充视图的空间。我不知道为什么TableColumnLayout会导致这种行为。 我如何实现这两个目标?