パッケージ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フラグに設定可能な状態を定義します。