JavaFX 节点

2024-06-17 00:04
文章标签 java 节点 fx

本文主要是介绍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 子类,以了解它是否可以包含项目或子节点,以及如何添加和访问它们。

这篇关于JavaFX 节点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1067930

相关文章

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

Spring Cloud LoadBalancer 负载均衡详解

《SpringCloudLoadBalancer负载均衡详解》本文介绍了如何在SpringCloud中使用SpringCloudLoadBalancer实现客户端负载均衡,并详细讲解了轮询策略和... 目录1. 在 idea 上运行多个服务2. 问题引入3. 负载均衡4. Spring Cloud Load

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2