OwnerDrawLabelProvider即使在调用erase方法后也会使列文本选择为蓝色

问题描述 投票:0回答:1

我使用的是使用OwnerDrawLabelProvider的jface Tableviewer。我正在获得行选择的蓝色背景,如下所示

enter image description here

然后我调用擦除方法来删除背景颜色。使用擦除方法后,它只删除了行背景颜色。对于文本选择,它仍然显示蓝色背景(如下所示)

enter image description here

这是我的代码

@Override
protected void measure(Event event, Object element) {

}

@Override
protected void paint(Event event, Object element) {
    LogTestData logtest = null;
    Rectangle bounds = event.getBounds();
    event.gc.drawText(" ", bounds.x, bounds.y);
    // Point point = event.gc.stringExtent(" ");
    if (element instanceof LogTestData) {
        logtest = (LogTestData) element;
    }
    int index = event.index;
    switch (index) {
    case 0:
        if (logtest.getIconInfo().equals(ActivityLog.INFO_LOG)) {
            event.gc.drawImage(infoImage, bounds.x, bounds.y);
        } 
       ................
       ................
    default:
        break;
    }

}

@Override
protected void erase(Event event, Object element) {

}

如何删除文本选择的背景颜色。提前致谢!

java eclipse rcp
1个回答
0
投票

erase方法中关闭事件选择标志:

event.detail &= ~SWT.SELECTED;
© www.soinside.com 2019 - 2024. All rights reserved.