我正在使用 TornadoFX
在我的项目中。我有一个根 View ,它是 borderPane
.我找到了 setPrefSize(1200.0, 720.0)
它完美无缺。但是,默认情况下窗口是可调整大小的,用户可以不受任何限制地调整其大小。是否有任何属性或方法可以设置 minHeight
和 minWidth
一个窗口,以便在调整大小时,它会在这些限制处停止?
到目前为止,我已经尝试过这些,但它们似乎都不起作用:
override val root = borderPane {
minHeight = 400.0
minWidth = 600.0
setMinSize(600.0, 400,0)
setWindowMinSize(600, 400) // this throws NPE
addClass(loginScreen) // I even set properties in CSS
}
// StyleClass
loginScreen{
minWidth = 600.px
minHeight = 400.px
}
正确的设置方式是什么
minHeight
和 minWidth
TornadoFX 中的一个窗口?还有一件事,我如何在 TornadoFX 中实际禁用窗口大小调整,没有名为 isResizable
的属性?附言我是 Kotlin 和 TornadoFX 的 super 新手。今天刚开始。
最佳答案
你走在正确的轨道上。根组件的首选大小将成为窗口的初始大小。您可以进一步配置窗口的最小尺寸,但不能在 UIComponent 的构造函数中进行,因为它是在实际窗口显示之前创建的。因此,onDock
回调是使用 setWindowMinSize
配置窗口的好地方.如果这是主应用程序窗口,更好的策略是覆盖 start
并配置 minWidth
和 minHeigh
Stage
的属性(这是一个窗口)。
值得注意的是便利功能setWindowMinSize
仅当您覆盖 onDock
时才可用在您的 UIComponent 中,因为它被定义为设置 UIComponent 的 currentStage 的最小大小的快捷方式。如果您覆盖 start
,您必须直接操作属性,如下所示:
class MyApp : App(MainView::class) {
override fun start(stage: Stage) {
with(stage) {
minWidth = 600.0
minHeight = 400.0
super.start(this)
}
}
}
class MainView : View() {
override val root = borderpane {
setPrefSize(1200.0, 720.0)
}
}
您可以设置
isResizable = false
在 start
的舞台/窗口上如果您想防止调整大小,也可以使用此功能。
关于javafx - 如何在 TornadoFX 中将 minHeight 和 minWidth 设置为窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54257803/