【发布时间】:2015-11-18 20:15:35
【问题描述】:
在一个 elipse-rcp 应用程序中,我正在为 jface 表中的一行设置背景颜色,但我不希望选择更改此颜色。我希望能够为选定的行指定颜色变化。
【问题讨论】:
标签: java eclipse-rcp jface
在一个 elipse-rcp 应用程序中,我正在为 jface 表中的一行设置背景颜色,但我不希望选择更改此颜色。我希望能够为选定的行指定颜色变化。
【问题讨论】:
标签: java eclipse-rcp jface
根据this thread,对于JFace Viewers(ListViewer,Table,Tree)通过使用EraseItem和MeasureItem事件的方式
一般原则详见“Custom Drawing Table and Tree Items”一文
SWT.EraseItem:允许客户端自定义绘制单元格的背景和/或选择,并影响是否应绘制单元格的前景
【讨论】:
table.addListener(SWT.EraseItem, new Listener() {
public void handleEvent(Event event) {
event.detail &= ~SWT.HOT;
if ((event.detail & SWT.SELECTED) == 0) return; /// item not selected
Table table =(Table)event.widget;
TableItem item =(TableItem)event.item;
int clientWidth = table.getClientArea().width;
GC gc = event.gc;
Color oldForeground = gc.getForeground();
Color oldBackground = gc.getBackground();
gc.setBackground(colorBackground);
gc.setForeground(colorForeground);
gc.fillRectangle(0, event.y, clientWidth, event.height);
gc.setForeground(oldForeground);
gc.setBackground(oldBackground);
event.detail &= ~SWT.SELECTED;
}
});
【讨论】: