我正在尝试创建一个简单的视图,其中{{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
,但无济于事。
我觉得我在做一些愚蠢的事......有什么帮助吗?谢谢!
答案 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
。