0

このコードを使用して、プログラムから一般的なJavafxシーンを表示したい

class JFXWindowDisplay(myScene:Scene) extends Application {

    def start( stage: Stage) {

      stage.setTitle("My JavaFX Application")
      stage.setScene(myScene)
      stage.show()
    }
  }

//OBJECT NEEDED TO RUN JAVAFX : http://stackoverflow.com/questions/12124657/getting-started-on-scala-javafx-desktop-application-development
  object JFXWindowDisplay extends App {

    override def main(args: Array[String]) {
      Application.launch(classOf[JFXWindowDisplay], args: _*)
    }
  }

シーン引数をcompagnonオブジェクトに渡すにはどうすればよいですか?

たとえば、これをscalaスクリプトで実行して新しいjavafxウィンドウを開くプログラムを作成したいと思います。

class myProgram() extends App  {

  val root = new StackPane
  root.getChildren.add(new Label("Hello world!"))

  val myScene = new Scene(root, 300, 300))
  // then run ControlTest object with this scene
  ControlTest(myScene)
}
4

1 に答える 1

0

彼の特定のシーンでそれぞれ2つ以上を準備traitsしてから、必要なものをアプリケーションクラスにミックスすることができます

trait SceneProvider {
  def scene: Scene
}

trait Scene1 extends SceneProvider {
  val root = new StackPane
  root.getChildren.add(new Label("Hello world!"))
  def scene = new Scene(root, 300, 300)
}

trait Scene2 extends SceneProvider {
  val root = new StackPane
  root.getChildren.add(new Label("Hello world 2!"))
  def scene = new Scene(root, 300, 300)
}

trait JFXWindowDisplay {
  self: SceneProvider =>

  def start(stage: Stage) {
    stage.setTitle("My JavaFX Application")
    stage.setScene(scene)
    stage.show()
  }
}


class JFXWindowDisplay1 extends Application with JFXWindowDisplay with Scene1
class JFXWindowDisplay2 extends Application with JFXWindowDisplay with Scene2

object JFXMain extends App {
  override def main(args: Array[String]) {
    //here you chose an application class
    Application.launch(classOf[JFXWindowDisplay1], args: _*)
  }
}

編集:あなたのコメントに基づいて、これが機能するようになりました。

于 2013-01-15T22:15:23.363 に答える