JFace TableViewer标题前景色仅在鼠标悬停时切换

时间:2018-04-05 10:17:58

标签: java swt jface rcp

我有一个包含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会导致这种行为。 我如何实现这两个目标?

0 个答案:

没有答案