読者です 読者をやめる 読者になる 読者になる

きくらげ観察日記

好きなことを、適当に。

ScalaFXを触ってみる

Scala

ScalaFXについてのまとまったドキュメントが見当らないので(JavaFXのドキュメント見ろってことなのかな?)、ScalaFXに触っていく過程で分かったことを少しずつ書いていこうと思います。

とりあえずHello World

まずはとりあえず「Hello, World!」と書かれたウィンドウを表示するプログラムです。
ソースはほぼ公式のサンプルのコピペ

import scalafx.application.JFXApp
import scalafx.application.JFXApp.PrimaryStage
import scalafx.geometry.Insets
import scalafx.scene.Scene
import scalafx.scene.control.Label
import scalafx.scene.layout.BorderPane

object Hello extends JFXApp {
  stage = new PrimaryStage {
    title = "Hello, World!"
    scene = new Scene {
      root = new BorderPane {
        padding = Insets(25)
        center = new Label("Hello, World!")
      }
    }
  }
}

このコードの中で、JFXApp, PrimaryStage, Sceneという3つの重要なクラスが登場してきます。

JFXApp

ScalaFXを使ったアプリケーションのmain部分に相当するオブジェクトです。

Stage

GUIのウィンドウ部分に相当するクラスです。ScalaFXでGUIを記述する際は、基本的に

someObject = new SomeObject {
  propertyA = "..."
  propertyB = new SomeProperty {
    subProperty = "..."
    ...
  }
}

というように、コンストラクタのオーバーライドを用いてJSONのようなオブジェクトリテラル的にウィンドウの中身を定義していきます。

Scene

ウィンドウの描画領域に相当するクラスです。このインスタンスのroot以下に要素をツリー上に配置していくことによって、ウィンドウの中身を作っていきます。

Node

実際にScene上に配置する要素です。HTMLでいうDOM要素に相当します。


利用できるNode、設定できるプロパティ等については、以下のドキュメントを参照すればだいたい分かるかと思います。

ScalaFX API 8.0.60-R9
概要(JavaFX 8)

あと分からないことがあれば「JavaFX hogehoge」とかでググれば大体解決できます。JavaFXもScalaFXも存在するクラスやらプロパティはほとんど一緒なので。

JavaFX & Java8プログラミング―Javaによる新しいGUIプログラミング入門

JavaFX & Java8プログラミング―Javaによる新しいGUIプログラミング入門