Различная цветовая схема рендеринга в зависимости от выбора строки в TreeTableView (не столбец 0) - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть пользовательский редактор (для LocalDate) в столбце 1 (т.е. во втором столбце, с деревом в столбце 0).

Пользовательский редактор - это, по сути, код TextFieldTreeTableCell, а затем улучшенный (вы не можете на самом деле создать подкласс этого класса, потому что, например, его обязательное поле textField равно private).

Я пытаюсь сделать так, чтобы, если дата истекла, она имела особую окраску. Это достаточно просто сделать в updateItem(), методе рендеринга.

Но я также хочу сделать так, чтобы, если это выбранная строка (NB "выбор ячейки" выключен), окраска будет отличаться от невыбранной строки.

Это достигается в редакторе по умолчанию (использующем TextFieldTreeTableCell), используемом для такого столбца: вы видите белый шрифт на синем фоне при выборе, но черный на белом для невыбранного).

Я нашел способ определить, является ли строка выбрано:

getTreeTableRow().isSelected()

(NB, делающий isSelected() на самой ячейке, всегда возвращает false, если выбор ячейки выключен).

... и я вижу это, когда есть это рендер соответствующей строки с редактором по умолчанию, «выбранная» раскраска действительно применяется.

Чего я не могу найти, так это того, как изменение выделения приводит к повторному рендерингу. Это должно быть где-то в кишечнике кода для TextFieldTreeTableCell, может быть TreeTableCell или, возможно, класса CellUtils (package-private в этом пакете). Я изучил источник этих классов, но не могу найти механизм.

Так что на данный момент это выглядит так:

enter image description here

... тогда как я хочу, чтобы дата истечения срока действия (2019-04-17) в невыбранной строке визуально отличалась: например, бледно-желтый фон и бледно-розовый шрифт.

PS I Мы обнаружили, что это «рендеринг при выделении / отмене выбора» не происходит посредством вызова метода updateItem ячейки редактора. Так что что-то еще должно быть в состоянии вызвать рендеринг, и, возможно, мне придется поместить код, который применяет раскраску где-то, кроме updateItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...