これまで、記事の中で丸や四角を描画させることがありました。たとえば、第13回タイムラインを使ったアニメーションでは円や線を用いたアニメーションを紹介しました。しかし、このような描画要素についてまとめて説明を行っていませんでした。

 そこで、今月はこれらをまとめて紹介していきます。

 JavaFXでは丸や四角、線などをシェイプと呼び、javafx.scene.shape.Shapeクラスのサブクラスとして表します。ShapeクラスはNodeクラスのサブクラスなので、コントロールと同様にシーングラフに追加することができます。

 これに対し、Swingではコンポーネントしか扱わず、丸や四角はJava 2Dで描画を行っていました。SwingでJava 2Dを使用するには、JComponentクラスのサブクラスを作成するか、JLayerクラスを使わざるをえず、使い勝手がいいとはいえませんでした。

 また、Java 2Dを使用した描画は、手続き的に記述を行う必要があり、描画要素をオブジェクトとして扱うことができません。手続き的に記述することの利点もあるのですが、Scene Bulderなどのツールではサポートできなくなってしまう欠点もありました。

 これに対し、JavaFXでは丸や四角をクラスとして表します。もちろん、Scene Builderでもサポートしています。

 なお、JavaFXではJava 2Dのような手続き的な描画もサポートしています。手続き的な描画については来月紹介するキャンバスで行います。

シェイプ

 シェイプは前述したようにShapeクラスで表します。ShapeクラスはNodeクラスの機能に加え、シェイプを塗りつぶす色やシェイプを囲む線についての機能も提供されています。

 標準で提供されているシェイプを表1にまとめました。これらのクラスはいずれもjavafx.scene.shapeパッケージで定義されていますが、文字列を描画するTextクラスだけはjavafx.scene.textパッケージで定義されています。

表1●シェイプ
クラス名 説明
Arc 円弧
Circle
Ellipse 楕円
Line 直線
Rectangle 四角形
Text 文字列
Polygon 多角形
Polyline 複数の要素から構成される直線
CubicCurve 3次元ベジェ曲線
QuadCurve 2次元ベジェ曲線
Path 複数の要素から構成される線
SVGPath SVGで使用される形式のパス

 それぞれのクラスは、そのシェイプ特有のプロパティを持ちます。例えばCircleクラスであれば中心座標と半径、Rectangleクラスであれば四角の左上の角の座標と幅、高さを持ちます。