Я работаю над фитнес-приложением и пытаюсь создать что-то вроде меню, которое меняет контейнер вправо в зависимости от выбранного в данный момент пункта меню. Решение, которое я придумал до сих пор, заключается в том, что я извлекаю каждое представление, которое связано с элементом меню, из основного представления и заменяю контейнер с помощью функции replaceWith<ExcerciseEditor>()
. Это работает, но я думаю, что должно быть лучшее решение для этого.
// MainView.kt
open class MainView : View("Fit App"){
protected val container: StackPane by fxid()
override val root: AnchorPane by fxml("/view/MainView.fxml")
fun createExercise(){
replaceWith<ExerciseEditor>()
}
// [...]
}
// ExerciseEditor.kt
class ExerciseEditor : MainView(){
init {
container.children += loadFXML<AnchorPane>("/view/ExerciseEditor.fxml")
}
// [...]
}
Приложение выглядит так. root этого представления представляет собой HBox, содержащий две панели: слева от строки меню и справа панель стека, содержащую другие представления.