JavaFX 概述

要从 JavaFX 中充分受益,了解 JavaFX 的设计方式以及对 JavaFX 包含的功能有一个很好的概述是很有用的。本文的目的是为您提供 JavaFX 概述。本文将首先介绍一般的 JavaFX 设计,然后介绍 JavaFX 中的各种特性。

如果您熟悉 Flash/Flex,您会发现 JavaFX 在某种程度上受到了 Flash/Flex 的启发。JavaFX 中也有一些相同的想法。

一般来说,JavaFX 应用程序包含一个或多个对应于窗口的阶段。每个阶段都有一个场景。每个场景都可以有一个控件、布局等附加到它的对象图,称为场景图。这些概念都将在后面更详细地解释。下面是 JavaFX 应用程序的一般结构的图示:

舞台

舞台是 JavaFX 应用程序的外部框架 。舞台通常对应于一个窗口。在 JavaFX 可以在浏览器中运行的早期阶段,舞台还可以指网页内 JavaFX 可用于绘制自身的区域。

由于 Java 浏览器插件的弃用,JavaFX 主要用于桌面应用程序。在这里,JavaFX 取代了 Swing 作为推荐的桌面 GUI 框架。而且我必须说,JavaFX 看起来比 Swing 更加一致且功能丰富。

在桌面环境中使用时,JavaFX 应用程序可以打开多个窗口。每个窗口都有自己的舞台。

每个阶段都由StageJavaFX 应用程序中的一个对象表示。StageJavaFX 应用程序有一个由 JavaFX 运行时为您创建的主对象。如果 JavaFX 应用程序Stage需要打开其他窗口,它可以创建其他对象。例如,对于对话框、向导等。

场景

要在 JavaFX 应用程序的舞台上显示任何内容,您需要一个场景。一个舞台一次只能显示一个场景,但可以在运行时交换场景。就像剧院中的舞台可以重新安排以在戏剧期间显示多个场景一样,JavaFX 中的舞台对象可以在 JavaFX 应用程序的生命周期内显示多个场景(一次一个)。

您可能想知道为什么 JavaFX 应用程序的每个阶段会有多个场景。想象一个电脑游戏。一个游戏可能有多个“屏幕”向用户显示。例如,初始菜单屏幕、主游戏屏幕(玩游戏的地方)、游戏结束屏幕和高分屏幕。这些屏幕中的每一个都可以由不同的场景来表示。当游戏需要从一屏切换到下一屏时,它只需将相应的场景附加到StageJavaFX 应用程序的对象上即可。

场景由SceneJavaFX 应用程序中的对象表示。JavaFX 应用程序必须创建Scene它需要的所有对象。

场景图

所有视觉组件(控件、布局等)都必须附加到要显示的场景,并且该场景必须附加到舞台才能使整个场景可见。附加到场景的所有控件、布局等的总对象图称为场景图

节点

附加到场景图的所有组件都称为节点。所有节点都是 JavaFX 类的子类,称为javafx.scene.Node.

有两种类型的节点:分支节点和叶节点。分支节点是可以包含其他节点(子节点)的节点。分支节点也称为父节点,因为它们可以包含子节点。叶节点是不能包含其他节点的节点。

控件

JavaFX 控件是 JavaFX 组件,它们在 JavaFX 应用程序中提供某种控制功能。例如,按钮、单选按钮、表格、树等。

为了使控件可见,它必须附加到某个Scene对象的场景图中。

控件通常嵌套在一些 JavaFX 布局组件中,这些组件管理控件相对于彼此的布局。

JavaFX 包含以下控件:

  • 手风琴
  • 按钮
  • 复选框
  • 选择框
  • 选色器
  • 组合框
  • 日期选择器
  • 标签
  • 列表显示
  • 菜单
  • 菜单栏
  • 密码字段
  • 进度条
  • 单选按钮
  • 滑块
  • 微调器
  • 拆分菜单按钮
  • 拆分窗格
  • 表视图
  • 选项卡窗格
  • 文本区域
  • 文本域
  • 标题窗格
  • 切换按钮
  • 工具栏
  • 树表视图
  • 树视图

这些控件中的每一个都将在单独的文本中进行解释。

布局

JavaFX 布局是其中包含其他组件的组件。布局组件管理嵌套在其中的组件的布局。JavaFX 布局组件有时也称为父组件 ,因为它们包含子组件,而且布局组件是 JavaFX 类的子类 javafx.scene.Parent。

布局组件必须附加到某个Scene对象的场景图才能可见。

JavaFX 包含以下布局组件:

  • 团体
  • 地区
  • 窗格
  • HBox
  • 盒子
  • 流窗格
  • 边框窗格
  • 边框窗格
  • 堆栈窗格
  • 瓷砖窗格
  • 网格窗格
  • 锚点窗格
  • 文本流

这些布局组件中的每一个都将在单独的文本中进行介绍。

嵌套布局

可以将布局组件嵌套在其他布局组件中。这对于实现特定布局很有用。例如,要获得不在网格中布局但每行不同的组件的水平行,您可以在 VBox 组件内嵌套多个 HBox 布局组件。

图表

JavaFX 带有一组内置的即用型图表组件,因此您不必每次需要基本图表时都从头开始编写图表代码。JavaFX 包含以下图表组件:

  • 面积图
  • 条形图
  • 气泡图
  • 折线图
  • 饼形图
  • 散点图
  • 堆积面积图
  • 堆积条形图

2D 图形

JavaFX 包含可以轻松在屏幕上绘制 2D 图形的功能。

3D 图形

JavaFX 包含可以轻松在屏幕上绘制 3D 图形的功能。

声音的

JavaFX 包含使在 JavaFX 应用程序中播放音频变得容易的功能。这通常在游戏或教育应用中很有用。

视频

JavaFX 包含使在 JavaFX 应用程序中播放视频变得容易的功能。这通常在流媒体应用程序、游戏或教育应用程序中很有用。

网络视图

JavaFX 包含一个WebView能够显示网页(HTML5、CSS 等)的组件。JavaFXWebView组件基于 WebKit - Chrome 和 Safari 中也使用的网页渲染引擎。

该WebView组件使得将桌面应用程序与 Web 应用程序混合成为可能。有时这很有用。例如,如果您已经有一个不错的 Web 应用程序,但需要一些只有桌面应用程序才能提供的功能——例如磁盘访问、与 HTTP 以外的其他网络协议(例如 UDP、IAP 等)的通信。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【后端】websocket学习笔记

文章目录 1. 消息推送常见方式1.1 轮询 VS 长轮询1.2 SSE(server-sent event)服务器发送事件 2. websocket介绍2.1 介绍2.2 原理2.3 websoket API2.3.1 客户端【浏览器】API2.3.2 服务端API 3. 代码实现3.1 流程分析3.2 pom依赖3.3 配置类3.4 消息格式3.5 消息类 参…

【Css】纯css展开、收起超出的文本

效果 展开 收起 未超出 码 -webkit-line-clamp: 3; 设置限制行数 <div class"wrap"> <inputtype"checkbox"id"exp-txt"><div class"text"><labelfor"exp-txt"class"btn"></label&g…

纷享销客常见问题FAQ

运维和安全职责边界 应用专属是部署在客户私有云或者客户公有云租户的IT环境中的&#xff0c;由纷享销客与客户共同维护系统的稳定性。一般来说客户主要负责维护IT基础环境和账号权限的管理而纷享销客则负责在客户环境中进行应用系统的部署、优化和日常运维工作。在安全方面&am…

OrangePi AIpro 机器人仿真与人工智能应用测评

系列文章目录 前言 本篇文章分为2个部分&#xff0c;第一部分主要搭建了机器人的仿真环境&#xff08;ROS2 MuJoCo等&#xff09;&#xff0c;运行了机械臂及移动机器人相关示例程序&#xff1b;第二部分运行了OrangePi AIpro系统自带的示例程序及昇腾社区官方的示例程序&#…

马克·雷伯特访谈:机器人的未来及波士顿动力的创新之路

引言 机器人技术作为现代科技的前沿领域&#xff0c;始终吸引着大量的关注与研究。波士顿动力公司作为这一领域的领军者&#xff0c;其创始人兼前CEO马克雷伯特&#xff08;Marc Raibert&#xff09;近日在主持人莱克斯弗里德曼&#xff08;Lex Fridman&#xff09;的播客节目…

机器学习笔记 - 用于3D点云数据分割的Point Net的训练

一、数据集简述 ​在本教程中,我们将学习如何在斯坦福 3D 室内场景数据集 ( S3DIS )上训练 Point Net 进行语义分割。S3DIS 是一个 3D 数据集,包含来自多栋建筑的室内空间点云,占地面积超过 6000 平方米。Point Net使用整个点云,能够执行分类和分割任务。如果你一直在关注 …

【归并排序】| 详解归并排序核心代码之合并两个有序数组 力扣88

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️专栏&#xff1a;动态规划 &#x1f397;️如何活着&#xff0c;是我找寻的方向 目录 1. 题目解析2. 代码 1. 题目解析 题目链接: https://leetcode.cn/problems/merge-sorted-array/description/ 本道题是归并排序的…

SNAT和DNAT策略

1、SNAT策略及应用 SNAT应用环境&#xff1a;局域网主机共享单个公网IP地址接入Internet&#xff08;私有不能在Internet中被正常路由&#xff09; SNAT原理&#xff1a; 修改数据包的源地址。 SNAT转换前提条件&#xff1a; 局域网各主机已正确设置IP地址、子网掩码、默认…

库的制作 与 使用 (Linux下)

目录 动静态库的制作 前置知识 库的基本构造 问题 分析 要给什么文件 如何更好的让别人使用 库的生成 静态库的生成 makefile参考 动态库的生成 makefile参考&#xff08;包含动态库和静态库生成&#xff09; 库的使用 法一&#xff1a;放入系统路径 弊端 法二…

Android开发系列:高性能视图组件Surfaceview

一、Surfaceview概述 在Android应用开发领域&#xff0c;面对视频播放、游戏构建及相机实时预览等高性能需求场景&#xff0c;直接操控图像数据并即时展示于屏幕成为必要条件。传统View组件在此类情境下显现局限性&#xff1a; 性能瓶颈&#xff1a;传统View的绘制任务由UI主…

如何充分利用 Postgres 的内存设置

为了充分利用 PostgreSQL 的内存设置&#xff0c;你需要调整多个参数以优化数据库性能。这些参数包括共享缓冲区&#xff08;shared_buffers&#xff09;、工作内存&#xff08;work_mem&#xff09;、维护工作内存&#xff08;maintenance_work_mem&#xff09;、有效缓存大小…

命令词:引导行动的语言工具

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

《全职猎人》

《全职猎人》 [1-2]是日本漫画家富坚义博的作品。 1999年版改编电视动画由日本动画公司负责动画制作&#xff0c;于1999年10月16日&#xff0d;2001年3月30日在富士电视台播出&#xff0c;该动画的故事至贪婪之岛篇章结束&#xff0c;全92话。 该作在富坚义博老师天马行空的想…

markupsafe,一个神奇的 Python 库!

更多Python学习内容&#xff1a;ipengtao.com 大家好&#xff0c;今天为大家分享一个神奇的 Python 库 - markupsafe。 Github地址&#xff1a;https://github.com/pallets/markupsafe 在 Web 开发和模版渲染中&#xff0c;处理用户输入的数据时&#xff0c;防止 HTML 注入是至…

【Java】Object、Objects、包装类、StringBuilder、StringJoiner

目录 1.API2.Object类3.Objects类4.包装类4.1包装类概述4.2包装类的其他常见操作 5.StringBuilder 可变字符串5.1概述5.2StringBuilder案例 6.StringJoiner 1.API API&#xff1a;应用程序编程接口&#xff0c;全称application programing interface&#xff0c;即Java已经写好…

3分钟带手把手带你了解 FL Studio v21.2.3.4004 中文免费版(附中文设置教程)安装指南

3分钟带手把手带你了解 FL Studio v21.2.3.4004 中文免费版(附中文设置教程)安装指南&#xff0c;大家我是兔八哥爱分享&#xff0c;今天你带来的安装FL Studio 21破解版&#xff0c;纯正简体中文支持&#xff01; FL Studio 21 简称FL21&#xff0c;全称Fruity Loops Studio&a…

消息队列-Rabbit运行机制

Producer(生产者) 和 Consumer(消费者) Producer(生产者) :生产消息的一方&#xff08;邮件投递者&#xff09;Consumer(消费者) :消费消息的一方&#xff08;邮件收件人&#xff09; 消息一般由 2 部分组成&#xff1a;消息头&#xff08;或者说是标签 Label&#xff09;和 …

keystone认证服务

keystone认证服务 1、keystone管理用户 1-1、简介&#xff1a; 在OpenStack云计算平台中&#xff0c;Keystone是一个核心组件&#xff0c;主要用于提供统一的认证服务。其功能包括&#xff1a; 身份验证&#xff1a;Keystone负责验证用户的身份&#xff0c;通常通过用户名和…

记录一个flink跑kafka connector遇到的问题

【报错】 D:\Java\jdk1.8.0_231\bin\java.exe "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\lib\idea_rt.jar56647:D:\Program Files\JetBrains\IntelliJ IDEA 2022.2.3\bin" -Dfile.encodingUTF-8 -classpath D:\Java\jdk1.8.0_231\jre\lib\cha…

本学期嵌入式期末考试的综合项目,我是这么出题的

时间过得真快&#xff0c;临近期末&#xff0c;又到了老师出卷的时候。作为《嵌入式开发及应用》这门课的主讲教师&#xff0c;今年给学生出的题目有一点点难度&#xff0c;最后的综合项目要求如下所示&#xff0c;各位学生朋友和教师同行可以评论一下难度如何&#xff0c;单片…