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

标签 javafx kotlin tornadofx

我正在使用 TornadoFX在我的项目中。我有一个根 View ,它是 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
}

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

最佳答案

你走在正确的轨道上。根组件的首选大小将成为窗口的初始大小。您可以进一步配置窗口的最小尺寸,但不能在 UIComponent 的构造函数中进行,因为它是在实际窗口显示之前创建的。因此,onDock回调是使用 setWindowMinSize 配置窗口的好地方.如果这是主应用程序窗口,更好的策略是覆盖 start并配置 minWidthminHeigh 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 = falsestart 的舞台/窗口上如果您想防止调整大小,也可以使用此功能。

关于javafx - 如何在 TornadoFX 中将 minHeight 和 minWidth 设置为窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54257803/

相关文章:

java - 实现 JavaFX 应用程序自动更新功能

java - 如何将imageview绑定(bind)到数组索引mvvm javafx

java - 在 Mac 上使用 Eclipse 在 JavaFX 15 中未显示 GUI

android - 使用协程进行多次循环调用

javafx - TornadoFX 中的连续动画?

java - 线程中出现异常 "JavaFX Application Thread"java.lang.IllegalArgumentException

android - Kotlin 中的方法 hashMapOf()

java - Kotlin 中带有 val 的 @Embeddable 类

javafx - TableView单元格请求焦点

java - 尝试在 IntelliJ IDEA 中创建 jar 可执行文件