JavaFX 节点

news2024/11/23 15:43:31

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.coloradmin.cn/o/1829799.html

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

相关文章

运行vue3项目相关报错

1. VSCode打开TSVue3项目很多地方报错 报错内容 几乎所有文件都会出现未知飘红 error Delete CR prettier/prettier报错原因 插件冲突,Windows系统回车换行符与MAC不一致(所以这个问题Windows系统才会出现) 解决 需要安装Vue - Official…

掌握高等数学、线性代数、概率论所需数学知识及标题建议

在数学的广袤领域中,高等数学、线性代数和概率论作为三大核心分支,不仅在理论研究中占据重要地位,更在实际应用中发挥着举足轻重的作用。为了深入理解和掌握这三门学科,我们需要掌握一系列扎实的数学知识。 高等数学所需数学知识 …

vitepress搭建的博客系统cdn引入github discussions评论系统

github仓库必须是公开的。 按照CDN的方式引入 打开discussions模块 安装giscus app 配置giscus 就是刚安装了giscus app的仓库 页面往下走,生成了代码: 配置vitepress 采用了CDN的方式引入 使用web component 随便找个地方试试组件 效果 有了…

Web3失败下互联网的未来转型之路

互联网的消亡已不再是夸大其词的说法。在大型科技巨头和生成式AI的推动下,网络的死亡螺旋正在加速,就像希腊神话中的蛇怪,象征着自我吞噬与永生。互联网已经开始自我喂养,并吐出最糟糕的部分供我们消费。 没有价值 Web3未能提供…

LeetCode43.字符串相乘【大整数相乘】

LeetCode刷题记录 文章目录 📜题目描述💡解题思路 📜题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 注意:不能使用任何内置的 Big…

Windows10安装Docker Desktop(实操步骤版)

1,下载Docker Desktop 官网下载地址: https://desktop.docker.com/win/stable/amd64/Docker%20Desktop%20Installer.exe 国内镜像下载地址(本人下载这个): https://smartidedl.blob.core.chinacloudapi.cn/docker/2…

黄仁勋最新建议:找到一门技艺,用一生去完善、磨炼!

“你可能会找到你的英伟达。我希望你们将挫折视为新的机遇。” 黄仁勋职业生涯中最大的教诲并非来自导师或科技公司 CEO,而是来自他在国际旅行时遇到的一位园丁。 近日在加州理工学院毕业典礼上发表演讲时,黄仁勋向毕业生分享了自己在日本京都的小故事。…

windows11 x64 23H2 企业纯净版2024.6.16

闲来无事试安装了下da_nao_yan的 【6月12日更新】Windows11 22631.3737企业版 23H2 自用优化版 (原版地址:https://bbs.pcbeta.com/viewthread-1985546-1-1.html),感觉比原版流畅多了,重新按照自己习惯封装了下&#x…

!力扣105. 从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] …

Postgre 调优工具pgBadger部署

一,简介: pgBadger(日志分析器)类似于oracle的AWR报告(基于1小时,一天,一周,一月的报告),以图形化的方式帮助DBA更方便的找到隐含问题。 pgbadger是为了提高…

springboot集成shardingsphere-分库分表

导入maven依赖&#xff0c;如下 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><a…

【模块缝合】【NIPS 2021】MLP-Mixer: An all-MLP Architecture for Vision

文章目录 简介代码&#xff0c;from&#xff1a;https://github.com/huggingface/pytorch-image-models【多看看成熟仓库的代码】MixerBlock paper and code&#xff1a; https://paperswithcode.com/paper/mlp-mixer-an-all-mlp-architecture-for-vision#code 简介 这个转置…

jeecg快速启动(附带本地运行可用版本下载)

版本整理&#xff08;windows x64位&#xff09;&#xff1a; redis&#xff1a;3.0.504 MYSQL&#xff1a;5.7 Maven&#xff1a;3.9.4(setting文件可下载) Nodejs&#xff1a;v16.20.2&#xff08;建议不要安装默认路径下&#xff0c;如已安装在c盘&#xff0c;运行yarn报…

DDei在线设计器-DDeiCore-面板插件

DDei-Core-面板 面板是一个可见的功能界面&#xff0c;既可以装载到布局&#xff08;Layout&#xff09;上&#xff0c;也能够被嵌套进其它面板&#xff0c;这一篇对DDei-Core的提供的主要面板进行介绍&#xff0c;最后以表格的形式列举其它面板。 如需了解详细的API教程以及参…

Java并发编程三大神器之Semaphore

Java并发编程三大神器之Semaphore 1、Semaphore是什么2、Semaphore小试牛刀3、Semaphore和CountDownLatch组合使用4、Semaphore常用方法5、Semaphore 结语 1、Semaphore是什么 Semaphore 是一个计数信号量&#xff0c;是JDK1.5引入的一个并发工具类&#xff0c;位于java.util.…

YOLOv10涨点改进SPPF创新结构,重新设计全局平均池化层和全局最大池化层,增强全局视角信息和不同尺度大小的特征

本文改进:SPPF_improve利用全局平均池化层和全局最大池化层,加入一些全局背景信息和边缘信息,从而获取全局视角信息并减轻不同尺度大小所带来的影响,强烈推荐,适合直接使用,paper创新级。 目录 1,YOLOv10介绍 1.1 C2fUIB介绍 1.2 PSA介绍 1.3 SCDown 2.SPP &SP…

React 中的事件处理

React 中是如何处理事件的&#xff0c;现在下面简单的一段代码&#xff1a; export default function App() {const AList lazy(()>import(./List.js))const r useRef(null) const [show, setShow] useState(false);return (<><button onFocus{()>{setShow…

如何用 ChatGPT DALL-E3绘画(10个案例)

如何用ChatGPT绘画——10个案例&#xff08;附提示词&#xff09; DALL•E 3可以在ChatGPT plus里直接使用了。 如果想免费使用&#xff0c;可以用新必应免费使用。 上次有个朋友问&#xff1a;DALL•E 3 有什么用。 这里用十个案例&#xff0c;来解释一下这个问题。 1.创…

国产MCU芯片(1):航顺芯片MCU概览

前言: 截止2023年底,全国有3451家芯片设计公司,已经IPO的就有168家,尚未IPO的3283家中超过一半的年营收在1000万以下,迅猛发展的几年的确有些国产芯片开始站上赛道,这也是国际大背景下的一种必然选择,毕竟突然间出现的大市场需要国产顶上,但资本市场是周期性的,国产替…

扫地机LiDAR形态之美

石头扫地机V20 LiDAR: Flash光源和Spot光源切换 图来自 Robot森 LiDAR(Light Detection and Ranging,激光雷达)技术在扫地机器人中的应用,不仅提升了机器的智能性和实用性,还展现了一种科技与艺术的融合之美。 一、外观设计的精致性 紧凑与轻巧:扫地机器人的LiDAR传感器…