JavaFX 节点

JavaFX Node类javafx.scene.Node是添加到JavaFX 场景图的所有组件 的基类(超类) 。JavaFX Node 类是抽象的,因此你只需将 Node 类的子类添加到场景图中。场景图中的所有 JavaFX Node 实例共享一组由 JavaFX Node 类定义的公共属性。本 JavaFX 节点教程将介绍这些常见属性。

JavaFX 节点基础

每个 JavaFX 节点(子类)实例只能添加到 JavaFX 场景图中一次。换句话说,每个 Node 实例只能出现在场景图中的一个地方。如果您尝试多次将相同的 Node 实例或 Node 子类实例添加到场景图中,JavaFX 将抛出异常!

JavaFX 节点有时可以有子项——也称为子项。给定的 Node 实例是否可以有孩子取决于具体的 Node 子类。一个名为 JavaFX Node 的特殊子类 Parent用于对可以有子节点的 Node 实例进行建模。因此,可以有孩子的 Node 实例通常是 Parent 类的孩子——而不是直接的 Node 类。

JavaFX Stage和JavaFX Scene类不是 JavaFX Node 类的子类 。虽然这两个类用于显示 JavaFX 场景图,但只有添加到 JavaFX 场景实例的节点实例才被视为 JavaFX 场景图的一部分。

将 Node 实例附加到场景图后,仅允许管理 JavaFX 场景图的线程 JavaFX 应用程序线程修改 Node 实例。

JavaFX 节点属性

JavaFX Node 类以及 Node 的所有子类具有以下共同属性:

  • 笛卡尔坐标系
  • 由以下内容分隔的边界框:
    • 布局边界
    • 本地范围
    • 父母的界限
  • 布局X
  • 布局Y
  • 首选高度
  • 首选宽度
  • 最小高度
  • 最小宽度
  • 最大高度
  • 最大宽度
  • 用户数据
  • 项目(子节点)

这些属性中的每一个都将在后续部分中介绍。

JavaFX 节点坐标系

每个 JavaFX 节点都有自己的笛卡尔坐标系。与常规笛卡尔坐标系的唯一区别是 Y 轴是相反的。也就是说,坐标系的原点在坐标系的左上角。随着 Y 值的增加,该点从坐标系的顶部向下移动。Y 轴的这种反转在 2D 图形坐标系中是正常的。

JavaFX 节点可能具有负 X 和 Y 坐标。

每个节点都有自己的坐标系。此坐标系用于在父节点内定位子节点实例,或者在 JavaFX 画布上绘图时。这意味着,作为另一个节点的子节点的节点都有自己的坐标系,以及在其父节点坐标系中的位置 (X,Y)。

以下是父节点坐标系的示例,其中子节点位于父节点坐标系中的 (25,25) 处。子节点也有它自己的坐标系,它有它的 (0,0),其中子节点位于父坐标系中 - 意思是在父节点坐标系中的 (25,25)。

JavaFX 节点边界框

JavaFX 节点有一个边界框。JavaFX 节点的边界框是围绕节点形状的逻辑框。完整的节点位于边界框内——图形上就是这样。换句话说,节点的所有角落和边缘都包含在边界框内,并且节点周围没有额外的空间,除非通过效果、填充或其他应用于节点的东西添加。

实际上,一个节点有 3 个边界框:

姓名

描述

布局边界

节点在其自己的坐标空间中的边界 - 未应用任何效果、剪辑或变换。

boundsInLocal

节点在其自己的坐标空间中的边界 - 应用了效果和剪辑,但没有变换。

boundsInParent

节点在其父坐标空间中的边界 - 应用了效果、剪辑和变换。

这些边界框尺寸中的每一个都可以从它们对应的具有相同名称的属性中读取,这意味着属性名为layoutBounds和。 boundsInLocalboundsInParent

boundsInParent边界框被父节点(Parent)用来布局它的子节点 。父节点需要知道总空间,包括节点的所有效果、剪辑和变换,以便能够为其分配空间。

layoutX 和 layoutY

JavaFX 节点对象的layoutX和layoutY属性包含其父节点内部的节点的 X 和 Y。换句话说,layoutX 和 layoutY 是从父节点的 0,0(origo)的偏移量。

并非所有布局类都会尊重节点的 layoutX 和 layoutY。这取决于父节点的确切布局算法是什么。

node.setLayoutX(100);
node.setLayoutY(200);

首选宽度和高度

JavaFX Node 对象的首选宽度和高度属性指定给定 Node 对象(通常是 Node 的子类)的首选宽度和高度。不是所有的父节点类都会尊重子节点的preferredWidth 和preferredHeight。这取决于具体的父节点实现。

node.setPrefWidth(100);
node.setPrefHeight(100);

最小宽度和高度

JavaFX 节点对象的最小宽度和高度属性指定节点希望(或需要)显示自身的最小宽度和高度。并非所有的父节点类都可以尊重这些属性。这取决于具体的父节点实现。

node.setMinWidth(50);
node.setMinHeight(50);

最大宽度和高度

JavaFX 节点对象的最大宽度和高度属性指定节点希望(或需要)显示自身的最大宽度和高度。并非所有的父节点类都可以尊重这些属性。这取决于具体的父节点实现。

node.setMaxWidth(50);
node.setMaxHeight(50);

用户数据

setUserData()您可以使用该方法 在 JavaFX 节点上设置用户数据。此方法采用您自己选择的任何 Java 对象。通过这种方式,您可以将例如业务对象附加到 JavaFX 节点实例。这是将一些用户数据附加到 Node 实例的示例:

node.setUserData(new MyObject("Hey - some data"));

项目或子节点

许多 JavaFX 节点子类可以包含项目或子节点。你添加和访问这些子节点的具体方式取决于具体的节点子类。一些类有一个getItems()返回项目列表的方法。其他类有一个getChildren()方法做同样的事情。你必须检查具体的 Node 子类,以了解它是否可以包含项目或子节点,以及如何添加和访问它们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕节前端工程师前景怎么样:深入剖析与全面展望

毕节前端工程师前景怎么样:深入剖析与全面展望 在数字化浪潮的推动下,前端工程师作为连接技术与用户的桥梁,其职业前景备受关注。毕节地区的前端工程师同样面临着机遇与挑战并存的局面。那么,毕节前端工程师的前景究竟如何呢&…

【Ruby爬虫01】某吃瓜网站图片数据采集

介绍 由于最近在学习Ruby,写一个爬虫锻炼一下。涉及xml解析、多线程、xpath语法等基础知识。 实现代码 使用说明 使用前请先安装如下gem gem install nokogiri http openssl# nokogiri:一个解析xml和html的库,支持css、xpath语法 # htt…

一文了解Redis

一.什么是Redis 与MySQL一样,Redis也是客户端服务器结构的程序,是基于内存的键值对存储系统,属于NoSQL的一种。与很多键值对数据库不同的是,Redis 中的值可以是由 string(字符串)、hash(哈希&a…

高速缓存是怎么让CPU找到地址内容的?

这个场景在性能优化下,应该很少会用到。但是还是总结一下。 Input: CPU给的一个地址,例如 0xffads1233423 Out: 这个地址上的值。 WORKFLOW CPU 问高速缓存,高速缓存会拿这个地址的中间几个位置,组成一个key高速缓存拿着这个ke…

数学中的虚数单位 i 和电学中的虚数单位 j

什么是虚数? 虚数是扩展实数概念的一类数,能够解决某些在实数范围内无法解决的问题。虚数的基本单位是 (i),定义为: i − 1 i \sqrt{-1} i−1 ​ 这意味着 (i) 的平方是 -1: i 2 − 1 i^2 -1 i2−1 为什么需要虚…

【算法专题--链表】删除排序链表中的重复元素II -- 高频面试题(图文详解,小白一看就懂!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐ 双指针 -- 采用 哨兵位头节点 🥝 什么是哨兵位头节点? 🍍 解题思路 🍍 案例图解 四、总结与提炼 五、共勉 一、前言 删除排序链表中的重复元素II元素这道题&#xff0c…

【JKI SMO】框架讲解(二)

JKI State Machine 讲解 将JKI State Machine 模板拖曳到程序框图中, 如下图, 此模板会默认放置一个OK按钮在前面板中,用于提示用户如何增加一个简单的用户事件去使用此框架。 “Event Structure”,Idle:此分支可以设…

【JS重点17】原型链(面试重点)

一:原型链底层原理 以下面一段代码为例,基于原型对象(Star构造函数的原型对象)的继承使得不同构造函数的原型对象关联在一起(此处是最大的构造函数Object原型对象),并且这种关联的关系是一种链…

C#联合Halcon机器视觉框架源码—升级版

相较于之前的NxtVision,本软件代码架构更加合理,且新增ui设计器、原来的vb脚本改为C#脚本,并尝试将视觉与运动控制相结合,是一体化的框架。 对源码有需求的,订阅本专栏后,私信我领取。

活动集锦 | 英码科技积极参与行业盛会,AI赋能城市数字化转型

在当今数字经济时代,城市全域数字化转型已经成为提升城市管理效能、优化资源配置、推动经济发展的重要手段。英码科技始终致力于为企业打造高效、低成本的行业应用方案,助力企业实现数字化转型。近日,英码科技受邀参加了多场行业展示活动&…

华为OD刷题C卷 - 每日刷题 23(提取字符串中的最长表达式,模拟目录管理功能 - 完整实现)

1、提取字符串中的最长表达式 目标是从一个给定的字符串中提取出最长的合法简单数学表达式,并计算该表达式的值。如果存在多个同样长度的合法表达式,则选择第一个出现的表达式进行计算。 简单数学表达式的规则: 只包含0-9的数字和、-、*三种…

操作系统复习-线程同步

互斥量 两个线程的指令交叉执行互斥量可以保证先后执行称为原子性 原子性是指一系列操作不可被中断的特性这一系列操作要么全部执行完成,要么全部没有执行不存在部分执行部分未执行的情况 互斥锁 互斥量是最简单的线程同步的方法互斥锁,处于两态之一的…

01 飞行器设计 —— 一门独立的学科

01 飞行器设计 —— 一门独立的学科 01 引言02 飞机设计概述2-1 什么是飞机设计?2-1 飞机设计是从哪里开始的?2-2 如何成为一名飞机设计师?2-4 本书的组织 参考文献 说明:关于Raymer的《Aircraft Design》的读书笔记; …

解读ROS功能包模块的步骤

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言解读ROS功能包模块的步骤前言 认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长! 推荐开发经验及方法博客专栏: [https:/…

哇塞,超好吃的麻辣片,一口就爱上

最近,我发现了一款让人欲罢不能的美食——食家巷麻辣片!😍 一打开包装,那浓郁的麻辣香气就扑鼻而来,瞬间刺激着我的嗅觉神经。😃食家巷麻辣片的外观色泽鲜艳,红通通的一片,看着就特…

扩展动态数据统计

以下是三种主要的方式来实现您的需求&#xff0c;分别使用原生的HTML/JavaScript、Vue.js框架和React框架。 1. 使用原生HTML/JavaScript 添加复杂度类型选择 <div class"complexity-type-select"><label>选择复杂度类型&#xff1a;</label>&l…

Android断点续传原理及实现

常见两种网络请求方式 一、 HttpURLConnection HttpURLConnection的setRequestProperty()方法&#xff0c;对我们要读取的字节部分进行控制&#xff0c;比如: 1.Range0-100代表只读取前100个字节。 2.Range100-500代表读取从第100个字节开始&#xff0c;读到第500个字节为止。…

常见的宽基指数基金

指数基金投资指南 ❝ 这篇博客里面的内容主要来自于银行螺丝钉的《定投十年&#xff0c;财务自由》和《指数基金投资指南》这两本书中章“常见的宽基指数”&#xff0c;最近第三次读这本书&#xff0c;打算做一点笔记加深自己的印象。 博客中很多内容是从书中摘抄的&#xff0c…

【git使用三】git工作机制与命令用法

目录 git工作机制和相关概念 四个重要区域 分支的概念 上传代码到远程分支的基本流程 克隆代码 仓库同步 开发者如何提交代码到远程仓库分支 1.初始化本地仓库 2.关联本地仓库和远程仓库 创建关联 查看关联情况 如何解除关联 3.推送代码到远程仓库 3.1先下拉远程…

PyTorch计算机视觉入门:测试模型与评估,对单帧图片进行推理

在完成模型的训练之后&#xff0c;对模型进行测试与评估是至关重要的一步&#xff0c;它能帮助我们理解模型在未知数据上的泛化能力。本篇指南将带您了解如何使用PyTorch进行模型测试&#xff0c;并对测试结果进行分析。我们将基于之前训练好的模型&#xff0c;演示如何加载数据…