3

我正在尝试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
    }
  }
}

我应该以不同的方式将节点居中在 a 的中间StackPane吗?我也尝试root.alignment = Pos.CENTERInputViewinit 函数,但无济于事。

帮助这个可怜的盒子

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

4

2 回答 2

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")
    }
}
于 2017-06-13T06:11:30.757 回答
1

尝试super.start()在集合调用之前进行minWidth/Height调用。

于 2017-06-13T01:25:58.350 回答