JavaFX:Node

文章目录

    • Node

官方Documentation链接

Node


对于一个 JavaFX 场景(scene graph)来说,事实上它是一个树形的数据结构,其中场景中的每一个物件(Item)包含在这棵场景树的结点(Node)中,可以是一个叶子结点,这意味着这个 item 没有包含 children,可以理解为类似 HTML 中一个标签内包含的子标签;也可以是一个分支结点,这意味着在这个 item 之下,还包含一个或者多个 item,例如下图就是一个简单的场景的结构:

JavaFX:Node_第1张图片

在实际的软件中它更像是下面这样的:

JavaFX:Node_第2张图片
一个包含有图形以及文字和图片显示区域的场景。

而在一个场景中,往往包含有多个这样的树状结构,也就是多个 Group,例如场景中多个独立的模块,即图形化界面中具有不同功能,接收并响应不同的用户事件的块。这时,当你将一个结点从一个 Group 中移动到 另外一个 Group 的时候,会自动将这个结点归入这个新的 Group 中成为相应结点的后继,所以我们不需要考虑一个结点移动带来的影响。一个结点只会属于其中一棵这样的树。你马上会联想到一些类似拖拽,拉取的图形化界面的操作,你可以很简单的实现这样的功能。

每个结点都可以进行一系列的变换(transformations):

  • 平移(translation):坐标的平移变换,通常是进行一段给定的整数距离的移动
  • 旋转(rotation):让结点的坐标空间绕一个给定点进行旋转。注意这个坐标空间是类似图像中的像素坐标空间,左上角是 Origin(0,0),以顺时针方向为正方向,即输入的角度为正进行顺时针旋转
  • 大小变换(scaling):也有一个变换点(pivot),可以看作是你进行放大的位置,结点会相对于这个点进行缩放
  • 变形(shearing):绕某一个轴旋转,使得原来的x轴和y轴不在垂直

需要注意的是,不管进行怎样的变换,坐标和长宽属性都是不变的(相对于局部坐标系),而是改变了整个局部坐标系相对于全局坐标系的位置。

你可能感兴趣的:(JavaFX:Node)