SWT TableCombo отключить подсветку выбранного элемента
Я использую TableCombo, и когда я нажимаю кнопку раскрывающегося списка, отображается список всех элементов. Мне бы хотелось, чтобы выбранная строка не выделялась в этом списке (поскольку я использую разные цвета фона в зависимости от типа элемента, а выделение скрывает цвет фона выбранного элемента). Я попытался создать таблицу с SWT.NO_FOCUS
а также SWT.HIDE_SELECTION
флаги, но это не убрало основной момент. Есть идеи?
Я пытался найти что-то вроде маркера в разгаре, но мне не удалось
2 ответа
Я только что нашел эту ветку, которая в значительной степени отвечает на мой вопрос. За SWT.FULL_SELECTION
ОС выделяет подсветку автоматически - см. Table.CDDS_ITEMPOSTPAINT(NMLVCUSTOMDRAW nmcd, int wParam, int lParam)
на Win32.
Однако это поведение может быть изменено с помощью констант стиля. Правильным решением для меня было использование SWT.FULL_SELECTION
(можно выбрать целый ряд) и SWT.NO_FOCUS
(синяя подсветка не используется) и SWT.HIDE_SELECTION
(скрывает серый цвет фона по умолчанию для выбранного элемента) флаги вместе.
К сожалению, HIDE_SELECTION
флаг не поддерживается SWT Tree
,
Как предложено в этом ответе SO, можно отключить событие, переданное SWT.EraseItem
:
table.addListener(SWT.EraseItem, new Listener() {
@Override
public void handleEvent(Event event) {
event.detail &= ~SWT.SELECTED;
}
});
table
это таблица SWT, которую я получаю из своего JFace TableViewer
, Не уверен насчет TableCombo
API.