パッケージjavafx.scene
JavaFXシーン・グラフAPIのベース・クラスのコア・セットを提供します。 シーングラフはツリー形式のデータ構造です。ツリー内の各アイテムは0または1個の親および0個以上の子を持ちます。
このパッケージには次の2つのプライマリ・クラスがあります。
Scene
- レンダリング対象のシーンを定義します。 これには、シーンの背景を指定するfill
変数、シーンのサイズを指定するwidth
およびheight
変数、シーン上にレンダリングされるルートNodes
のリストを示すcontent
シーケンスが含まれています。 このようなNodes
のシーケンスがこのScene
のシーングラフになります。Scene
は、JavaFXコンテンツのトップレベル・コンテナであるStage
上にレンダリングされます。Node
- シーングラフ内のすべてのノードの抽象ベース・クラスです。 各ノードは、子ノードを持たないリーフ・ノードか、0個以上の子ノードを持つブランチ・ノードのいずれかになります。 ツリー内の各ノードは0または1個の親を持ちます。 シーングラフの各ツリー内には、親のないノードが1個のみあり、一般的にルート・ノードと呼ばれます。 シーングラフには複数のツリーが存在する場合があります。 それらのツリーの中には、Scene
の一部となっているために、表示できるものもあります。 その一方で、どのScene
にも含まれないツリーもあります。
ブランチ・ノードは、Parent
タイプか、またはそのサブクラスになります。
リーフ・ノードは、Rectangle
、Text
、ImageView
、MediaView
などのクラスか、または子を持たないその他のリーフ・クラスになります。
ノードはシーングラフ内のどの場所においても最大で1回しか出現できません。 具体的には、Parent
の子リスト内に、またはNode
のクリップとしてノードが出現できるのは1回までです。 これらの制限の詳細は、Node
クラスを参照してください。
例
JavaFXシーングラフの例を次に示します。
package example; import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.Group; import javafx.scene.paint.Color; import javafx.scene.shape.Circle; import javafx.scene.text.Text; import javafx.scene.text.Font; public class Example extends Application { @Override public void start(Stage stage) { Group root = new Group(); Scene scene = new Scene(root, 200, 150); scene.setFill(Color.LIGHTGRAY); Circle circle = new Circle(60, 40, 30, Color.GREEN); Text text = new Text(10, 90, "JavaFX Scene"); text.setFill(Color.DARKRED); Font font = new Font(20); text.setFont(font); root.getChildren().add(circle); root.getChildren().add(text); stage.setScene(scene); stage.show(); } public static void main(String[] args) { Application.launch(args); } }
前述の例では、次のイメージが生成されます。
座標系および変換
Node
クラスは、従来のコンピュータ・グラフィックスのローカル座標系を定義します。この座標系では、x
軸が右方向に増え、y
軸が下方向に増えていきます。 図形の具象ノード・クラスには、このローカル座標空間内での図形のジオメトリと位置を定義するための変数が用意されています。 たとえば、Rectangle
にはx
、y
、width
およびheight
変数があり、Circle
にはcenterX
、centerY
およびradius
があります。
あらゆるNode
に変換を適用できます。 変換には、平行移動、回転、スケーリングまたはシャーリングがあります。 変換によって、変換されるノードの親から見た、座標系の位置、向きまたはサイズが変化します。
変換の詳細は、Node
クラスを参照してください。
境界矩形
すべてのNode
が変換に対応しているため、各ノードのジオメトリ境界矩形の表現を変換の適用有無に応じて変えることができます。
各Node
では、次のプロパティによってこれらの境界矩形を指定します。
boundsInLocal
- 未変換ローカル座標におけるNode
の境界を指定します。boundsInParent
- すべての変換を適用した後のNode
の境界を指定します。 これがboundsInParentと呼ばれるのは、矩形が親の座標系に対して相対的になるためです。layoutBounds
- レイアウト計算の基礎として使用される、Node
の矩形境界を指定します。この境界はノードの視覚境界とは異なる場合があります。 図形、テキストおよびImageViewの場合、デフォルトのlayoutBounds
には図形のジオメトリのみが含まれます。
境界矩形の詳細は、Node
クラスを参照してください。
CSS
JavaFXシーン・グラフは、CSS (カスケード・スタイル・シート)を使用してノードのスタイルを設定する機能を提供します。 Node
クラスには、CSSセレクタによってスタイルの適用先ノードの検索に使用されるid
、styleClass
およびstyle
変数が含まれています。 Scene
クラスには、シーン内のノードに適用されるCSSスタイルシートを参照する一連のURLを指定するstylesheets
変数が含まれています。
CSSの詳細、ノードへのCSSスタイルの適用方法およびスタイル設定に使用可能なプロパティは、CSSリファレンス・ガイドを参照してください。
-
クラスのサマリー クラス 説明 AmbientLight 環境光源オブジェクトを定義します。Camera シーンをレンダリングするために使用されるカメラのベース・クラス。Cursor マウス・カーソルのビットマップ表現をカプセル化するクラスです。Group Group
ノードには、このノードがレンダリングされるたびに順番にレンダリングされる子のObservableListが含まれます。ImageCursor マウス・カーソルのカスタム・イメージ表現。LightBase LightBase
クラスは、光源の形式を表すオブジェクトの共通プロパティの定義を提供します。Node シーングラフ・ノードのベース・クラス。ParallelCamera 透視投影補正を使用せずにシーンをレンダリングするためのパラレル・カメラを指定します。Parent シーングラフ内で子を持つすべてのノードのベース・クラス。PerspectiveCamera シーンをレンダリングするための透視投影カメラを指定します。PointLight 点光源オブジェクトを定義します。Scene JavaFXScene
クラスは、シーン・グラフのすべての内容のコンテナです。SceneAntialiasing JavaFXSceneAntialiasing
クラスでは、目的のアンチエイリアスのレベルを指定します。SnapshotParameters ノード・スナップショットのレンダリング属性を指定するために使用するパラメータ。SnapshotResult このクラスには、スナップショット操作の結果が保持されます。SubScene SubScene
クラスは、シーングラフの内容のコンテナです。 -
列挙型のサマリー 列挙型 説明 AccessibleAction この列挙は、スクリーン・リーダーなどのアシスティブ・テクノロジがシーン・グラフからリクエストできるアクションを記述します。AccessibleAttribute この列挙は、スクリーン・リーダーなどのアシスティブ・テクノロジがシーン・グラフからリクエストできる属性を記述します。AccessibleRole この列挙は、Node
のアクセス可能な役割を記述します。CacheHint Node.cacheHint
で使用するキャッシュ・ヒントDepthTest この列挙では、ノードのdepthTestフラグに設定可能な状態を定義します。