Невозможно получить узел для центрирования в стеке с помощью 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")
    }
}
Другие вопросы по тегам