OwnerDrawLabelProvider делает выделение текста столбца синим даже после вызова метода стирания - PullRequest
0 голосов
/ 23 марта 2019

Я использую jface Tableviewer, который использует OwnerDrawLabelProvider. Я получаю синий фон для выбора строки, как показано ниже

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) {

}

Как удалить цвет фона для выделения текста. заранее спасибо!

1 Ответ

0 голосов
/ 23 марта 2019

В методе erase отключите флаг выбранного события:

event.detail &= ~SWT.SELECTED;
...