Package javafx.scene
为JavaFX Scene Graph API提供核心的基类集。 场景图是一个树形数据结构,其中树中的每个项目都有零个或一个父项和零个或多个子节点。
这个包中的两个主要类别是:
-
Scene
“定义要呈现的场景。 它包含一个fill
变量,指定场景,背景width
和height
变量指定场景的大小,和一个content
包含的“根”的列表序列Nodes
将被渲染到场景上。Nodes
这个序列是这个Scene
的场景图。 AScene
呈现在Stage
上 ,它是JavaFX内容的顶级容器。 -
Node
-场景图中所有节点的抽象基类。 每个节点是没有子节点的“叶”节点或具有零个或多个子节点的“分支”节点。 树中的每个节点都有零个或一个父节点。 场景图中每个树中只有一个节点将没有父节点,这通常被称为“根”节点。 场景图中可能有几棵树。 一些树可能是Scene
的一部分,在这种情况下,它们有资格被显示。 其他树木可能不属于任何Scene
的一部分。
分支节点类型为Parent
或其子类。
叶节点是类如Rectangle
, Text
, ImageView
, MediaView
,或不能生育其它这种叶类。
场景图中的任何地方最多可能出现节点。 具体而言,节点必须出现不超过一次在子女名单Parent
或作为的剪辑Node
。 有关这些限制的更多细节,请参阅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
的矩形边界,并且可能与节点的可视边界不同。 对于shape,Text和ImageView,默认的layoutBounds
仅包括形状几何。
有关边界矩形的更多信息,请参阅Node
类。
CSS
JavaFX Scene Graph提供了使用CSS(级联样式表)对节点进行风格化的功能。 该Node
类包含id
, styleClass
,并style
变量由CSS选择器用于查找样式应该应用节点。 Scene
类包含stylesheets
变量,它是引用要应用于该场景中的节点的CSS样式表的URL序列。
有关CSS的更多信息,如何将CSS样式应用于节点,以及可用于样式的属性,请参阅CSS Reference Guide 。
-
类摘要 Class 描述 AmbientLight 定义环境光源对象。Camera 用于渲染场景的相机的基类。Cursor 封装鼠标光标位图表示的类。Group 一个Group
节点包含一个可观察列表的子节点,每当该节点呈现时,它们按顺序渲染。ImageCursor 鼠标光标的自定义图像表示。LightBase LightBase
类提供了代表光源形式的对象的常用属性的定义。Node 场景图节点的基类。ParallelCamera 指定用于渲染场景而不进行透视校正的并行相机。Parent 在场景图中有子节点的所有节点的基类。PerspectiveCamera 指定用于渲染场景的透视相机。PointLight 定义点光源对象。Scene JavaFXScene
类是场景图中所有内容的容器。SceneAntialiasing JavaFXSceneAntialiasing
类指定所需的抗锯齿级别。SnapshotParameters 用于指定节点快照的渲染属性的参数。SnapshotResult 此类保存快照操作的结果。SubScene SubScene
类是场景图中内容的容器。 -
枚举摘要 Enum 描述 AccessibleAction 该枚举描述了屏幕阅读器等辅助技术可以从场景图中请求的动作。AccessibleAttribute 该枚举描述了诸如屏幕阅读器之类的辅助技术可以从场景图中请求的属性。AccessibleRole 这个枚举描述了一个Node
的可访问角色。CacheHint 缓存提示与Node.cacheHint
一起使用DepthTest 该枚举定义了节点中depthTest标志的可能状态。