tornadofx EventBus развернуть таблицу с использованием объекта tableview

Задний план:
Предположим, у меня есть несколько фрагментов одной таблицы в представлении , каждый с rowExpander.

Ожидаемое поведение:
Если в одном фрагменте таблицы я разворачиваю строку, другие фрагменты должны быть расширены. То же самое для краха

Мой прогресс:
Пример фрагмента:

tableview(dataset) { column("First Name", Person::firstNameProperty) column("Last Name", Person::lastNameProperty) rowExpander(true) { selectedData.item?.apply { fire(ExpandDataEvent(dataset.indexOf(this))) } column("Mobile Nos.", Person::mobileNumProperty) column("Email Ids", Person::emailIdProperty) } bindSelected(selectedData) subscribe<ExpandDataEvent> { event -> selectionModel.select(event.index) } } 

Класс события:

 class ExpandDataEvent(val index: Int) : FXEvent() 

То, что я понимаю из «подписки», заключается в том, что оно вызывается при запуске события (в настоящее время я запускаю событие всякий раз, когда пользователь расширяет строку путем двойного щелчка / нажатия знака «плюс»); и поскольку подписка помещается внутри tableview, она вызывается для всех присутствующих фрагментов таблицы (это то, что я хочу). Но в методе subscribe я делаю selectModel.select (event.index), который выбирает только соответствующую строку индекса. Я хочу расширить строку (желательно с помощью selectionModel)

Вопрос 2:
Можно ли удалить столбец «плюс»? Для rowExpand, если я установил для expandOnDoubleClick значение true, я не хочу столбца знака плюс в моем представлении таблицы.

Конструктор rowExpander возвращает фактический ExpanderColumn который является в основном обычным TableColumn . Сохраните ссылку на расширитель, чтобы потом работать с ним:

 val expander = rowExpander(true) { ... } 

Непосредственно ниже вы можете скрыть столбец расширения:

 expander.isVisible = false 

Теперь легко переключить расширенное состояние определенной строки от подписчика событий:

 subscribe<ExpandDataEvent> { event -> expander.toggleExpanded(event.index) selectionModel.select(event.index) } 

Возможно, вы захотите дважды проверить, что вы не переключаете расширитель для tableview, который активировал событие, поэтому подумайте о включении источника события в ваше событие и опишите его на подписчике.

Я исследую, можем ли мы добавить видимый логический параметр к функции rowExpander builder, поэтому вам не нужно вызывать isVisible вручную 🙂

  • Текст ярлыка не обновляется, хотя поток пользовательского интерфейса кажется отзывчивым
  • Почему у меня нет нулевой сцены?
  • Kotlin и TornadoFX: привязать наблюдаемое свойство к функции коллекции?
  • Связывание представления с изменяющимся свойством контроллера
  • Gradle Compilation не может найти tornadofx в Linux
  • Как отменить подписку на события в TornadoFX?
  • TornadoFX - удалить элемент с помощью контекстного меню правой кнопкой мыши
  • Использование сторонних пользовательских интерфейсов с TornadoFX
  • Как реализовать обратный вызов TornadoFX WebEngine в Котлине
  • TornadoFX Как создать MDI со списком моделей дочерних окон?
  • Как вводить ItemViewModel в tornadoFx
  • Давайте будем гением компьютера.