2016-07-23 7 views
4

私はtornadoFXを初めて使用しています。Scene heightやwidth、PrimaryStageモダリティなどのPrimaryStageまたはSceneプロパティを設定する方法がわかりません。 私を助けてください。TornadoFXでPrimaryStageまたはSceneプロパティを設定する方法

UPDATE

私はこの例を見て、シーンの高さと幅を設定したい:

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")) 
    } 
} 
+1

クイックヒント: 'tornadofx'であなたの質問にタグを付けると、いくつかのTornadoFXチームのメンバーにあなたの質問がすぐに通知されます:) –

+0

@EdvinSyse答えてくれてありがとう、あなたは正しいですが、私は 'tornadofx'このタグを見つけることができず、私の評判のために新しいタグを作成することはできません)。 – mojtab23

+0

ああ、私たちはタグを持っていたようですが、これは一度も使われていないのでおそらく削除されています。私はそれを取り戻すことについて見ていきます。ありがとう:) –

答えて

6

プライマリビューは最初のシーンのサイズを決定させたくない場合は、あなたがApp.startをオーバーライドして、再びシーンの寸法が決まります初期段階の大きさを設定することができます。

override fun start(stage: Stage) { 
    super.start(stage) 
    stage.width = 800.0 
    stage.height = 600.0 
} 
最終結果は同じになりますので、あなただけ保つことができる

override fun createPrimaryScene(view: View) = Scene(view.root, 800.0, 600.0) 

はこれがさらに簡単にするために、プライマリビューを自分でシーンを作成してみましょうTornadoFX 1.5.3での機能があるでしょう最初の例のコードです。

1

あなたは間違いなくTornadoFX Guideをチェックアウトする必要があります。 TornadoFXを始めるには素晴らしいリソースです。

質問に答えるには、ビューのルートにサイズを設定できます。これは、あなたが(TornadoFXのBuilderパターンをusning)欲しいものを行う必要があります。

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") 
     } 
    } 
} 

別のオプションは、type safe stylesheetsを使用することです:

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ができることは何でもできますが、はるかに便利で強力で(名前が示すように)タイプセーフです。

免責事項:私は、TornadoFX用のタイプセーフスタイルシートシステムの設計と構築に携わっていました。

+1

@ruckusありがとうございますが、 'Scene'や' Stage'プロパティを設定する方法を見つけたいのですが、それは 'Node'sや' Parent'sのような子ではありません。 – mojtab23

+1

その場合、@ edvinはあなたが望むものを正確に持っています。 –

関連する問題