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 нет значения по умолчанию. Хотя это должно быть легко добавить. Не стесняйтесь создать билет для улучшения и даже внести свой вклад.:)

Другие вопросы по тегам