Невозможно получить узел для центрирования в стеке с помощью TornadoFX
Я пытаюсь сделать простое представление, где у меня есть фоновый узел (на данный момент у меня есть текстовый узел здесь, но последний узел будет SVG-путь) за VBox
, Я пытаюсь расположить фоновый узел в корне StackPane
прежде чем перейти к реализации VBox
, но я не могу правильно отцентрировать свой узел.
Вот мои занятия:
class UserInputUI : App(InputView::class, UIStyles::class) {
init {
reloadStylesheetsOnFocus()
}
override fun start(stage: Stage) {
stage.minWidth = 1024.0
stage.minHeight = 768.0
super.start(stage)
}
}
class InputView : View() {
override val root = StackPane()
init {
text("I wish to be centered") {
stackpaneConstraints {
alignment = Pos.CENTER
addClass(UIStyles.headerFontStyle)
}
}
}
}
и мой UIStyles
класс.. если это актуально.
class UIStyles : Stylesheet() {
companion object {
val headerFontStyle by cssclass()
private val headerFontColor = Color.BLACK
}
init {
headerFontStyle {
fontSize = 48.px
}
}
}
Есть ли другой способ, которым я должен центрировать узел в середине StackPane
? я пробовал root.alignment = Pos.CENTER
в InputView
Функция инициализации тоже, но безрезультатно.
Я чувствую, что делаю что-то глупое... какая-нибудь помощь? Спасибо!
2 ответа
Попробуйте положить super.start()
позвонить до minWidth/Height
установить звонки.
Мы обсуждали это на Slack и считаем, что между Linux и Mac/Windows может быть несоответствие JavaFX, поскольку ваш код работает "из коробки" на Mac/Windows, но не работает на Linux.
Когда вы размещаете super.start()
позвонить до minWidth/minHeight
Конфигурация, сцена уже будет создана для вас, поэтому я считаю, что это и есть причина.
По умолчанию StackPane будет располагать детей, поэтому stackpaneConstraints
конфигурации. Ваш код также выглядел бы намного чище, если бы вы использовали компоновщики для определения стека:
class InputView : View() {
override val root = stackpane {
text("I wish to be centered")
}
}