无法通过TornadoFX将节点置于StackPane中心

时间:2017-06-12 23:22:48

标签: javafx kotlin tornadofx

我正在尝试创建一个简单的视图,其中{{1}后面有一个后台节点(现在,我有一个文本节点,但最后一个节点将是一个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,但无济于事。

help this poor box

我觉得我在做一些愚蠢的事......有什么帮助吗?谢谢!

2 个答案:

答案 0 :(得分:3)

我们已经在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")
    }
}

答案 1 :(得分:1)

尝试在super.start()设置调用之前调用minWidth/Height