Я новичок в tornadoFX, и я не знаю, как настроить свойства PrimaryStage или Scene, такие как высота сцены или ширина или мода PrimaryStage. Пожалуйста, помогите мне.
ОБНОВИТЬ
Я хочу установить высоту и ширину сцены, посмотрите на этот пример:
dependencies { compile 'no.tornado:tornadofx:1.5.2' compile "org.jetbrains.kotlin:kotlin-stdlib:1.0.3" }
import javafx.scene.control.Label import javafx.scene.layout.VBox import tornadofx.App import tornadofx.FX import tornadofx.View class Main : App() { override val primaryView = MyView::class init { // this two lines have error ( Val cannot be reassigned. ) FX.primaryStage.scene.height = 600.0 FX.primaryStage.scene.width = 800.0 // or this line causes this exception ( java.lang.NoSuchMethodException ) FX.primaryStage.isResizable = false } } class MyView : View() { override val root = VBox() init { root.children.add(Label("My label")) } }
Если вы не хотите, чтобы основной вид определял начальный размер сцены, вы можете переопределить App.start
и настроить размеры основного этапа, что еще раз будет определять размеры сцены:
override fun start(stage: Stage) { super.start(stage) stage.width = 800.0 stage.height = 600.0 }
Чтобы сделать это еще проще, в TornadoFX 1.5.3 будет функция, позволяющая самостоятельно создавать сцену для основного вида:
override fun createPrimaryScene(view: View) = Scene(view.root, 800.0, 600.0)
Конечный результат будет таким же, поэтому вы можете просто сохранить код в первом примере.
Вы обязательно должны проверить руководство TornadoFX . Это отличный ресурс для начала работы в TornadoFX.
Чтобы ответить на ваш вопрос, вы можете установить размер в корне представления. Это должно делать то, что вы хотите (используя шаблон построителя TornadoFX):
class Main : App() { override val primaryView = MyView::class } class MyView : View() { override val root = VBox() init { with (root) { prefWidth = 800.0 prefHeight = 600.0 label("My label") } } }
Другой вариант – использовать безопасные таблицы стилей :
class Main : App() { override val primaryView = MyView::class init { importStylesheet(Style::class) } } class MyView : View() { override val root = VBox() init { with (root) { label("My label") } } } class Style : Stylesheet() { init { root { prefHeight = 600.px prefWidth = 800.px } } }
Преимущество безопасного стиля стилей заключается в том, что вы можете использовать разные блоки (вы можете установить так же легко, как prefHeight = 10.cm
или prefWidth = 5.inches
). Он может в принципе делать все, что может сделать CSS, но гораздо удобнее, мощнее и (как следует из названия) типа safe.
Отказ от ответственности: Я занимался проектированием и созданием системы безопасных стилей типа TornadoFX.