No se puede hacer que el nodo se centre en un StackPane con TornadoFX

Estoy intentando hacer una vista simple donde tengo un nodo de background ( por ahora, tengo un nodo de text aquí pero el nodo final será una ruta SVG ) detrás de un VBox . Estoy intentando que mi nodo de background se centre en la raíz de StackPane antes de pasar a la implementación de VBox , pero parece que no puedo centrar correctamente mi nodo.

Aquí están mis classs:

 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 centenetworking") { stackpaneConstraints { alignment = Pos.CENTER addClass(UIStyles.headerFontStyle) } } } } 

y mi class UIStyles … si es relevante.

 class UIStyles : Stylesheet() { companion object { val headerFontStyle by cssclass() private val headerFontColor = Color.BLACK } init { headerFontStyle { fontSize = 48.px } } } 

¿Hay alguna manera diferente en que se supone que debo centrar el nodo en el medio de un StackPane ? También intenté root.alignment = Pos.CENTER en la function init de InputView , pero fue en vano.

ayuda esta pobre caja

Siento que estoy haciendo algo tonto … ¿Alguna ayuda? ¡Gracias!

Intente poner la llamada super.start() antes de las llamadas configuradas minWidth/Height .

Hemos discutido esto en Slack, y creemos que puede haber una discrepancia JavaFX entre Linux y Mac / Windows, ya que su código funciona de la caja en Mac / Windows pero falla en Linux.

Cuando coloca la llamada super.start() antes de la configuration minWidth/minHeight , la escena ya se habrá creado para usted, así que creo que esa es la causa.

Un StackPane centrará por defecto sus elementos secundarios, por lo que no es necesario configurar el stackpaneConstraints . Su código también se verá mucho más limpio si usa los constructores para definir el stackpane también:

 class InputView : View() { override val root = stackpane { text("I wish to be centenetworking") } } 
  • TornadoFX con TestFX cierra la vista después de cada TestCase
  • Cómo instalar un controller de clics en una vista de list dinámica (en tornadofx)
  • Forma de configurar las properties de PrimaryStage o Scene en TornadoFX
  • TornadoFX envuelve las classs de dominio en ItemViewModel
  • java.lang.NoSuchMethodException cuando intenta ejecutar la aplicación TornadoFX
  • Kotlin y TornadoFX: ¿une una propiedad observable a una function de recostackción?
  • Columnas de tabla dinámica
  • Cómo cambiar la vista en TornadoFx
  • Tornadofx - Cómo pasar el parámetro a Fragment en cada instancia
  • Context de reinicio de JavaFX
  • tornadofx EventBus expande la fila de la tabla usando el object tableview