簡體   English   中英

TornadoFX 中設置 PrimaryStage 或 Scene 屬性的方法

[英]Way of setting PrimaryStage or Scene properties in TornadoFX

我是 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: UIComponent) = Scene(view.root, 800.0, 600.0)

最終結果將是相同的,因此您可以保留第一個示例中的代碼。

您絕對應該查看TornadoFX 指南 這是開始使用 TornadoFX 的絕佳資源。

要回答您的問題,您可以在視圖的根中設置大小。 這應該做你想做的(使用 TornadoFX 的構建器模式):

class Main : App(MyView::class)

class MyView : View() {
    override val root = vbox {
        prefWidth = 800.0
        prefHeight = 600.0

        label("My label")
    }
}

另一種選擇是使用類型安全的樣式表

class Main : App(MyView::class, Style::class)

class MyView : View() {
    override val root = vbox {
        label("My label")
    }
}

class Style : Stylesheet() {
    init {
        root {
            prefHeight = 600.px
            prefWidth = 800.px
        }
    }
}

類型安全樣式表的優點是您可以使用不同的單位(您可以輕松地設置prefHeight = 10.cmprefWidth = 5.inches )。 它基本上可以做 CSS 可以做的任何事情,但更方便、更強大,並且(顧名思義)類型安全。

免責聲明:我參與了 TornadoFX 類型安全樣式表系統的設計和構建。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM