Вы никогда не должны вручную создавать экземпляр View или Fragment.Однако вы можете использовать find
со специальным аргументом, включающим параметры, которые должны быть переданы в представление или фрагмент.Имейте в виду, что представление будет создаваться только один раз в текущей области, поэтому, если вам нужно открыть несколько компонентов UIC одного типа, инициализированных с различными параметрами, убедитесь, что они являются фрагментами.
См. Раздел Компонентыруководства для получения дополнительной информации:
https://github.com/edvin/tornadofx-guide/blob/master/part1/3.%20Components.md
Поиск «Передача параметров в представления» в документе выше.
Тем не менее, почти всегда лучше использоватьОбласти для передачи информации для просмотра.Вы можете прочитать больше об этих лучших практиках в руководстве.
Обратите внимание, что вы не можете добавлять параметры конструктора к вашим компонентам пользовательского интерфейса, так как каркасу не нужен конструктор без аргументов, чтобы иметь возможность создавать экземпляр класса.Параметры передаются с использованием расширения by param
, например:
class AudioView : Fragment("AudioView") {
val playFromFile: Boolean by param()
override val root = vbox {
}
}
Также обратите внимание, что для того, чтобы иметь возможность получать несколько экземпляров в одной и той же области видимости, необходимо использовать Fragment, а не View, поскольку представления являются синглетонами внутрисфера.