我正在使用一个标准的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
答案 0 :(得分:4)
如果您想使用TableViewer来管理表格,可以使用StyledCellLabelProvider来确定单个单元格的颜色/字体/等。 TableViewer将为您处理“所有者绘制”方面。最大的麻烦是设置与TableViewer一起使用的ContentProvider,LabelProvider和输入类。
答案 1 :(得分:3)
此问题解释了为什么您无法更改SWT表中所选行的颜色:
答案 2 :(得分:1)
不知道是否有更简单的方法,但你可以用“所有者绘制”来实现。请参阅此SWT Snippet。但这有点矫枉过正。