Отключить одну строку JFace TableViwer

Кто-нибудь знает, как отключить одну строку JFace TableViwer? У меня есть TableViwer, построенный следующим образом:

TableViwer tv = new TableViwer(composite, SWT.NONE| SWT.FULL_SELECTION | SWT.BORDER);

tv может иметь много строк, но я динамически добавляю конкретную уникальную строку в таблицу (при нажатии внешней кнопки), и мне нужно сделать только эту строку отключенной (выделена серым цветом и недоступна для выбора. Невыборка также может быть достигнута с помощью существующих обработчик, если нет другого варианта).

Я искал в Google, но не получил много информации. Я новичок в SWT/JFace, поэтому буду признателен за любую помощь.


person user2018023    schedule 14.07.2016    source источник


Ответы (1)


Вам нужно будет что-то сделать в прослушивателе выбора, чтобы отклонить выбор строки.

Чтобы сделать строку серой, вы можете реализовать в поставщике меток IColorProvider, который позволяет определить два метода:

public Color getForeground(Object element);
public Color getBackground(Object element);

который может раскрасить строку.

Вы также можете использовать поставщик меток, производный от StyledCellLabelProvider, который позволяет вам определять более сложную окраску.

person greg-449    schedule 14.07.2016
comment
Привет @Greg ...... Спасибо за помощь, цвет фона устанавливается, когда я добавляю строку. Но теперь я столкнулся с еще одной проблемой, на самом деле у пользователя есть возможность сохранить данные в xml. Поэтому, когда таблица впервые загружает данные из xml, цвет фона не меняется. - person user2018023; 15.07.2016
comment
Это новый вопрос. Примите этот ответ, а затем задайте новый вопрос, показывающий минимальную версию кода проблемы. - person greg-449; 15.07.2016
comment
Спасибо за вашу помощь @Greg, я принял ваш ответ. - person user2018023; 17.07.2016