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 ¿Cómo crear MDI con una list de models de windows hijas?
  • TornadoFX: permite copyr un elemento de una vista de list al portapapeles
  • java.lang.ClassNotFoundException: no encontró la class "com.my.app.example.Main" en la ruta: DexPathList
  • Cómo cambiar la vista en TornadoFx
  • Tornadofx Javafx - Cómo volver a cargar una vista / componente
  • ¿Cómo puedo crear un encabezado de columna nested / dividido usando TornadoFx?
  • preguntas sobre DI, ViewModel, etc.
  • Enlazando una vista a una propiedad de controller cambiante
  • TornadoFX filechooser
  • Dibujando líneas desde ViewModel TornadoFX
  • Tornadofx - controlando el object de la fila de la vista de tabla mientras construye