如何在TornadoFX中将minHeight和minWidth设置为窗口?

时间:2019-01-18 16:21:01

标签: javafx kotlin tornadofx

我在项目中使用TornadoFX。我有一个borderPane的根视图。我能够找到setPrefSize(1200.0, 720.0),并且运行良好。但是,默认情况下,该窗口是可调整大小的,用户可以无限制地调整其大小。是否有任何属性或方法可以设置窗口的minHeightminWidth,以便在调整大小时停在这些限制处?

到目前为止,我已经尝试了这些方法,但是它们似乎都不起作用:

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
}

在TornadoFX中设置窗口的minHeightminWidth的正确方法是什么?还有一件事,如何在TornadoFX中实际上禁用窗口大小调整,没有名为isResizable的属性? 附言我是Kotlin和TornadoFX的超级新手。今天才开始。

1 个答案:

答案 0 :(得分:1)

您处在正确的轨道上。根组件的首选大小将成为窗口的初始大小。您可以进一步配置窗口的最小大小,但是您不能在UIComponent的构造函数中设置它的最小大小,因为它是在显示实际窗口之前创建的。因此,onDock回调是使用setWindowMinSize配置窗口的好地方。如果这是主应用程序窗口,则更好的策略是重写start并为minWidth(这是一个窗口)配置minHeighStage属性

值得注意的是,便利功能setWindowMinSize仅在您重写UIComponent中的onDock时可用,因为它被定义为设置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