Scene类
大约 2 分钟
Scene 场景
Scene 类是场景图中所有内容的容器。
package javafx.scene;
@DefaultProperty("root")
public class Scene implements EventTarget {}场景的大小可在构建过程中由应用程序初始化。
- 如果没有指定尺寸,场景将根据其内容的首选尺寸自动计算初始尺寸。如果只指定了一个维度,则会使用指定的维度计算另一个维度,同时尊重根内容的偏向性。
应用程序可在创建 Scene 时请求深度缓冲区支持或场景抗锯齿支持。具有三维形状的场景可以启用场景抗锯齿来提高渲染质量。
Scene 可以在任何线程上创建和修改,直到它连接到正在展示的Window上(a Window that is showing)。此后,只能在 JavaFX 应用程序线程上对其进行修改。
Parent root
一个 Scene 必须通过设置 Parent root 属性来指定场景图的根结点(Node)。
- 如果使用
Group类作为根节点,场景图的内容将被场景的宽度和高度剪切,场景大小的变化(如用户调整舞台大小)不会改变场景图的布局。 - 如果将一个可调整大小的节点(布局为
Region或Control)设为根节点,那么根节点的大小将与场景的大小保持一致,从而在必要时转发场景内容。
使用构造方法,传入 Parent root 以完成设置根节点。
通过 root 添加子结点,Secne 负责设置有关 root 的渲染信息。
Group root = new Group(); // 准备 root
Scene s = new Scene(root, 300, 300, Color.BLACK); // 构建 Scene
Rectangle r = new Rectangle(25,25,250,250);
r.setFill(Color.BLUE);
root.getChildren().add(r); // 通过 root 添加子结点Scene 常用 API
Scene 有着大量的和监听器和事件处理的API,关键字:
- layout、fill、root
- camera、cursor
- height、width
- drag、key、mouse、scroll、swipe、touch、zoom、rotate
// 构造函数
Scene(Parent root);
Scene(Parent root, double width, double height);
// 实例方法
void setRoot(Parent root);
Parent getRoot();
void setCursor(Cursor value);