RowSelectionModel показывает все ячейки заголовка столбца
Я создал NatTable с RowSelectionModel и RowSelectionProvider:
dataProvider = new ListDataProvider<>(rowData, columnAccessor);
bodyDataLayer = new DataLayer(dataProvider);
glazedListEventsLayer = new GlazedListsEventLayer<>(bodyDataLayer, rowData);
columnReorderLayer = new ColumnReorderLayer(glazedListEventsLayer);
columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
selectionLayer = new SelectionLayer(columnHideShowLayer);
ViewportLayer viewportLayer = new ViewportLayer(selectionLayer);
selectionProvider = new RowSelectionProvider<>(selectionLayer, dataProvider, true);
selectionLayer.setSelectionModel(new RowSelectionModel<>(selectionLayer, dataProvider, idAccessor, false));
По сути, таблица делает то, что я хочу. Есть только одно исключение:
Таблица выглядит так:
Как и предполагалось, в таблице показана выбранная строка (1). Также он выделяет фактически выбранную ячейку (2), что очень приятно. Но он отображает весь заголовок столбца таблицы как выбранный (3). Я не хочу этого Я хочу либо вообще не выделять ячейки заголовка, либо (что еще лучше:) Я бы хотел выделить только ячейку заголовка столбца курсора-ячейки (2).
Я подумал, что, возможно, есть метка конфигурации, прикрепленная к ячейкам заголовка столбца, что приводит к выделению (поэтому я мог бы просто изменить стиль для этого вида метки, чтобы избавиться от выделения), но COLUMN_HEADER - это единственная метка конфигурации, я можно увидеть при отладке.
Итак, я немного застрял сейчас. Что вызывает выделение ячеек заголовка и как я могу изменить это поведение? Можно ли выделить только заголовок ячейки курсора (как это делается с ячейкой курсора выбранной строки (2))?
1 ответ
Это не метка, которую нужно проверять, для выбора это DisplayMode. Поэтому, чтобы не отображать заголовок столбца при выделении строки, необходимо зарегистрировать ту же конфигурацию стиля для DisplayMode.SELECT, что и для DisplayMode.NORMAL.
Если вы хотите выделить только якорь выделения в заголовке столбца, вам нужно зарегистрировать пользовательский IConfigLabelAccumulator в DataLayer заголовка столбца, который подключен к SelectionLayer, и добавляет настраиваемую метку, если ячейка в заголовке столбца находится в тот же столбец, что и привязка выбора.
Только для выделения якоря выбора в самом NatTable нет значения по умолчанию. Хотя это должно быть легко добавить. Не стесняйтесь создать билет для улучшения и даже внести свой вклад.:)