swt表更改选择项目颜色

时间:2011-02-09 04:08:15

标签: select swt selection

我正在使用一个标准的swt表,正如您所知,默认情况下,当选择一个项目时,它是蓝色的(Windows标准)。当选择无效时,它变为浅灰色。我想覆盖这两种颜色......我在网上搜索过,但只能找到一些看起来不再适用于表格小部件的旧代码。

下面是一些示例代码,我试图覆盖默认颜色,但它似乎没有工作(请原谅脏代码,只是试图让某些东西起作用):

    table.addSelectionListener(new SelectionListener() {
            @Override
            public void widgetSelected(SelectionEvent event) {
            Color rowSelectionColor = 
                            new Color(Display.getCurrent(),new RGB(235, 200, 211));
                            TableItem item =(TableItem)event.item;
                item.setBackground(0,rowSelectionColor);
                item.setBackground(1,rowSelectionColor);
                item.setBackground(2,rowSelectionColor);


            }

            @Override
            public void widgetDefaultSelected(SelectionEvent event) {
            Color rowSelectionColor = 
                            new Color(Display.getCurrent(),new RGB(235, 200, 211));
                            TableItem item =(TableItem)event.item;
                item.setBackground(0,rowSelectionColor);
                item.setBackground(1,rowSelectionColor);
                item.setBackground(2,rowSelectionColor);


            }
        }); 

任何想法都会受到大力赞赏:D

3 个答案:

答案 0 :(得分:4)

如果您想使用TableViewer来管理表格,可以使用StyledCellLabelProvider来确定单个单元格的颜色/字体/等。 TableViewer将为您处理“所有者绘制”方面。最大的麻烦是设置与TableViewer一起使用的ContentProvider,LabelProvider和输入类。

答案 1 :(得分:3)

此问题解释了为什么您无法更改SWT表中所选行的颜色:

Windows 7 SWT Table selected row highlight color

答案 2 :(得分:1)

不知道是否有更简单的方法,但你可以用“所有者绘制”来实现。请参阅此SWT Snippet。但这有点矫枉过正。