Как установить minHeight и minWidth для окна в TornadoFX? - PullRequest
0 голосов
/ 18 января 2019

Я использую TornadoFX в моем проекте. У меня есть корневой вид, который является 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. Просто начал сегодня.

1 Ответ

0 голосов
/ 19 января 2019

Вы на правильном пути.Предпочтительный размер корневого компонента станет исходным размером окна.Кроме того, вы можете настроить минимальный размер окна, но вы не можете сделать это в конструкторе UIComponent, поскольку он создается до фактического окна, в котором он будет отображаться. По этой причине обратный вызов onDock являетсяхорошее место для настройки окна с setWindowMinSize.Если это главное окно приложения, то еще лучше было бы переопределить start и настроить свойства minWidth и minHeigh для Stage (который является окном).

ItСтоит отметить, что вспомогательная функция setWindowMinSize доступна только в том случае, если вы переопределяете onDock в своем UIComponent, поскольку она определена как ярлык для установки минимального размера currentStage для UIComponent.Если вы переопределите 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, если хотитепредотвратить изменение размера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...