设置swt表列前景色

时间:2013-07-08 13:39:26

标签: java colors swt

有没有办法设置SWT表列前景和/或背景颜色?还是SWT表头前景和背景颜色? setForeground / setBackground方法在 org.eclipse.swt.widgets.TableColumn

上不可用

2 个答案:

答案 0 :(得分:1)

没有。无法在TableColumn上设置背景/前景(取决于本机支持)。您可能需要自己定制绘制标题。 使默认标题不可见并在单独的画布中绘制自己的标题,您需要使其与TableColumn同步并滚动Table

org.eclipse.swt.widgets.Table.setHeaderVisible(boolean)

答案 1 :(得分:0)

TableItem中有setBackground()setForeground()种方法。

如果您希望能够更有效地自定义项目,我建议您改用TableViewer

Here是一个很棒的教程,带有样式示例。


以下是一个带有彩色列的简单Table的示例代码:

public static void main(String[] args)
{
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setText("StackOverflow");
    shell.setLayout(new FillLayout());

    Table table = new Table(shell, SWT.NONE);
    table.setHeaderVisible(true);

    for(int col = 0; col < 3; col++)
    {
        TableColumn column = new TableColumn(table, SWT.NONE);
        column.setText("Column " + col);
    }

    Color color = display.getSystemColor(SWT.COLOR_YELLOW);

    for(int row = 0; row < 10; row++)
    {
        TableItem item = new TableItem(table, SWT.NONE);

        for(int col = 0; col < 3; col++)
        {
            item.setText(col, "Item " + row + " Column " + col);

            if(col == 1)
            {
                item.setBackground(col, color);
            }
        }
    }

    for(int col = 0; col < 3; col++)
    {
        table.getColumn(col).pack();
    }

    shell.pack();
    shell.open();
    while (!shell.isDisposed())
    {
        if (!display.readAndDispatch())
            display.sleep();
    }
    display.dispose();
}

enter image description here