JAVAFX2.0书:第二章 体系结构及框架-1

至所有的读者:

     各位亲,大家好,当您看到本留言时,相信你对JavaFx2已产生浓厚的兴趣。和您一样,我也很喜欢JAVAFX。当我开始学习它时,我一直在反思,有没有更好的方式来学习,并且和大家分享呢?在某个早晨6点多起来慢跑时,我下了一个决定,我可否试着写一本关于JavaFx的书,可能是脑冲血的原因吧,每天6点起床写文章。这几天终于整完了前面两章,大部份都是来自于Oracle官网的英文资料。对于英文不好的我来说,确实是一个不小的挑站。即然决定了,还是得坚持。作者水平有限,文章然免有错,欢迎大家拍砖。同时,作者更希望得到大家的肯定,如果您支持作者,请给作者留言。您的鼓励和肯定是最好的蜜糖,让作者象蜜蜂一样无私的贡献!!  QQ:573696849 小卓   备注:javafx2

 

     最好的祝福
                                                                                                 小卓

                                                                                            2011-07-15

     

第二章 体系结构及框架

一、JavaFX的体系结构和框架

    JavaFX 2.0平台是一个使用Java技术构建和设计富客户端平台,它使得应用程序开发人员能够轻松地创建和部署富互联网应用(RIA),同时,在多个平台上保持一致的行为。 图1所示的JavaFX 2.0平台的体系结构组件。 图1中的部分描述了每个组件和部件间的互连,JavaFX公共API引擎和场景图(Scene Graph)在于运行您的JavaFX代码。 它是由子组件组成,其中包括新的JavaFX高性能图形引擎,称为Prism;新的小型,高效的窗口系统,被称为Glass,媒体引擎以及Web引擎。虽然不公开这些组件,对它们的描述可以帮助您更好地了解怎么运行JavaFX应用程序。

图1 JavaFX的体系结构图



 
“图1 JavaFX的体系结构图”的说明

二、Scene Graph场景图

JavaFX的场景图,图 1所示红色层的一部分,是构建JavaFX应用程序的起点。它是一个层次结构树中的节点,代表所有的应用程序的用户界面的视觉元素。它可以处理输入,可以呈现。一个场景图中的单个元素都称为一个节点,每个节点都有一个编号,样式类和边界量。场景图中的每个节点有一个相临的节点和零个或更多的子节点。 它也可以有以下几种:

l 模糊和阴影

l 透明度

l 转换

l 事件处理(如鼠标,键和输入法)

l 特定于应用程序的状态

l 和Swing及抽象窗口工具包(AWT)不同,JavaFX场景图除了基本图形(如矩形和文本)外,还具有控制、布局容器、图像和媒体。对于大多数使用者,场景图可以简化它们创建丰富UI的工作,动画在场景图中也可以迅速完成。

javafx.scene API允许建立以下几种类型的内容:

l 节点 :形状(2 - D和3 - D),图像,媒体,嵌入式Web浏览器,文本,UI控件,图表,布局及容器

l 状态 :变换(节点的定位和方向),视觉效果,和其他内容的视觉状态

l 动画 :随着时间的推移场景图对象的属性发生改变

l 效果 :改变场景图节点,如模糊,阴影,并调整颜色的外观的简单对象

三、JavaFX功能的Java API

    使用JavaFX 2.0平台包括一套完整的公共API,在红层图1所示。 这些API提供了前所未有的自由和灵活性,以构建丰富的客户端应用程序(RIA), JavaFX平台全面的身临其境的媒体功能结合到一个直观和全面的一站式的发展环境使用最好的Java平台的能力。 

这些新的Java API JavaFX的功能,包含如下:

l 允许使用功能强大的Java功能,例如泛型,注释和多线程。

l 更容易使Web开发人员可以使用从其他流行的动态语言包括JRuby,Groovy和JavaScript,如JavaFX的。

l 允许Java开发人员编写大型或复杂的的JavaFX应用程序中使用其他的系统语言,比如Groovy。

l 允许使用JavaFX脚本语言类似的约束型的语言。 包括支持高性能的延迟绑定,绑定表达式,序列表达式的约束,并结合进行重新评估。 替代语言(如Groovy)可以使用此绑定库引入类似JavaFX脚本绑定语法。

l 扩展Java集合库,包括观察者模式和列表(map),作为应用程序用户界面的数据模型,观察这些数据模型的变化,并更新相应的UI控制,JavaFX 2.0API编程模型是JavaFX 1.x的产品线的延续。 JavaFX API的大部分都被直接移植到Java,如布局和介质的API,以及许多其他细节,已经根据JavaFX 1.x版本用户收到的反馈意见进行改进和简化了。 JavaFX 2.0依赖于Web标准如CSS样式控制和ARIA的规范,使用其他Web标准也正在审查中。

四、Graphics System图形系统

JavaFX的图形系统如图1所示,蓝色部份是一个JavaFX场景图层之下的实现细节。 它支持2 - D和3 - D场景图。 它提供软件渲染,当系统上的图形硬件是满足要求的情况下,支持硬件加速渲染。

两个图形加速管道的JavaFX 2.0平台上实现:

l Prism提供绘制处理。 

l 它可以运行在硬件和软件渲染器之上,包括3 - D。 

l 负责光栅和JavaFX的场景渲染。 

以下是多重渲染路径的基础所支持的设备:

l 在Windows XP和Windows Vista下的DirectX 9

l 在Windows 7下的DirectX 11

l 在Mac,Linux,嵌入式系统下的OpenGL

l 硬件加速时不可用时使用Java2D

l 完全硬件加速时使用的路径是可能的,但它不可用时,使用Java2D的进行路径渲染,是因为Java2D的渲染路径已包含在所有的Java运行时环境(JRE的)。 处理的3 - D场景时,这一点尤为重要。 当然,硬件渲染路径时性能更好。

l Quantum工具包关联的Prism 和Glass 窗口工具包,它们为JavaFx提供堆栈支持,负责管理相关的渲染与事件处理的线程规则。

五、Glass 窗口工具包

Glass 窗口工具包,如米色所示, 在图 1的中间部分,是最低层的JavaFX 2.0图形堆栈框架,其主要职责是提供本地的支持服务,如管理窗口,定时器和外观。它作为JavaFX平台连接到本机操作系统平台相关的层。

玻璃工具包还负责管理事件队列。 不同于抽象窗口工具包(AWT),管理自己的事件队列,Glass工具包使用本机操作系统的事件队列调度线程。 也不像AWT的,Glass具包上运行JavaFX应用程序相同的线程,AWT的原生的一半运行在一个线程,并在另一个线程上运行的Java水平,这引入了很多问题,其中有许多是在JavaFX使用单一的JavaFX应用程序线程的方法已经解决的。

六、主题(Threads)

在任何特定时间该系统都运行两个或多个线程,如下:

l 应用程序线程 :这是JavaFX应用程序开发人员所使用的主线程。 任何激活的场景,都是一个场景,是一个窗口的一部分,必须从这个线程访问。 然而,场景可以在后台线程创建。 这使开发人员能够创建一个后台线程上的复杂的场景,同时保持平稳和快速的激活场面的动画。 JavaFX应用程序的线程与从Swing和AWT事件调度线程(EDT)不同,因此JavaFX代码嵌入到Swing应用程序时,必须小心。

l Prism 渲染线程 :线程处理事件调度单独的渲染。 它允许正在处理帧的N +1 N帧被渲染。 这种执行并行处理的能力是一个很大的优势,特别是在现代系统有多个处理器的情况下。 Prism渲染线程也可能有多个光栅线程,帮助需要渲染负荷的工作。

l 媒体线程 :线程在后台运行,并通过场景图中使用JavaFX应用程序的线程同步的最新帧。

七、脉冲(Pulse)

一个脉冲是一个事件,它是JavaFX场景图中时间同步与Prism 场景图中元素的状态。 场景图运行的动画一个脉冲被限制在60帧每秒(fps), 即使动画没有运行,一个脉冲在场景图中的东西也是变化的。 例如,如果一个按钮的位置发生变化时,脉冲被重置。

    当一个脉冲触发场景图中的元素状态是同步的渲染层,一个脉冲允许应用程序开发一种方法来处理异步事件,这个重要的功能允许系统批量地执行脉冲的事件。布局和CSS也是有脉冲事件的, 在场景图中的许多变化,可能导致多个布局或CSS的更新,这可能会严重降低性能。 系统自动执行每脉冲的CSS布局传递一次,以避免性能降低。 应用程序开发人员也可以手动触发布局或CSS传递需要进行测量前一个脉冲。

    Glass 窗口工具包是负责执行的脉冲事件,它采用的高分辨率的本地定时器执行。

八、媒体和图像

    JavaFX媒体的功能,允许通过javafx.scene.media  API 让JavaFX支持视觉和听觉媒体。 为MP3,AIFF及WAV音频文件和FLV视频文件提供支持。 JavaFX媒体的功能是提供三个独立的部分组成:Media object代表一个媒体文件,MediaPlayer用于播放媒体文件,MediaView是一个节点,用于显示媒体。

媒体引擎的组成部分,在绿色在图 1所示,在JavaFX 2.0已完全重新设计,以增强稳定性,提高性能,并提供跨平台一致的行为。 

欲了解更多信息,请阅读JavaFx应该程序文档。

九、嵌入式浏览器

JavaFX的嵌入式浏览器是一个新的JavaFX用户界面的组件,它提供通过一个Web浏览器和全浏览功能的API。 图1所示橙色是Web引擎组件,是基于WebKit的,它是一个开放源码的Web浏览器引擎,支持HTML5,CSS,JAVASCRIPT,DOM和SVG 。它允许开发人员在他们的Java应用程序实现以下功能:

l 从本地或远程URL渲染HTML内容

l 支持历史记录和提供的后退和前进导航

l 刷新的内容

l Web组件应用效果

l 编辑HTML内容

l 执行JavaScript命令

l 处理事件

这种嵌入式的浏览器组件有以下对象:

l WebEngine提供了基本的网页浏览功能。

l 封装WebView一个WebEngine对象,HTML内容集成到一个应用程序的场景,并提供应用效果和转换的字段和方法的。它是一个扩展节点类。

更多的JavaFX的嵌入式浏览器的详细介绍, 请参阅JavaFX应用程序。

十、CSS

JavaFX的层叠样式表(CSS)提供了改变外观的能力,在不改变任何该应用程序的源代码的情况下,允许定制JavaFX应用程序的用户界面。CSS允许改变任何在JavaFX场景图的节点,并应用于异步节点。 JavaFX的CSS样式也可以很容易改变动运行中的场景。

图2展示了相同的一组UI控件两个不同的CSS样式的应用程序,从位于右上角的菜单中选择风格。



 
“图2 CSS样式表样本”的说明

JavaFX的CSS是基于W3C的CSS 2.1版本规格,在第3版上进行一些补充。 JavaFX的CSS支持被扩展和设计成允许解析任何兼容的CSS解析器,这使得JavaFX和其他的(如HTML页面)的CSS样式可以混合使用。 所有的JavaFX属性名称的前缀都有"-fx- ",看上去和标准的HTML CSS兼容有所不同,其实只是JavaFX值的语义略有不同。

更多详细的关于JavaFX CSS信息,请参阅JavaFX应用程序外观的文章。

 

 

欢迎访问原创地址:http://weedria.iteye.com/

Idea 配置JavaFX Scene Builder 2.0 本教程所用文件版本如下: FX环境: openjfx - 1.0.2_windows-x64_bin-sdk.zip 官网下载:https://gluonhq.com/products/javafx/ 官网进不去也可以通过:此网站 JavaFX Scene Builder 2.0(界面生成软件) 官网下载: 一、配置JavaFX Scene Builder 2.0 安装JavaFX Scene Builder 2.0(这个最简单,略) 将 JavaFX Scene Builder 2 阅读详情

相关推荐

SpringBoot开发javaFX桌面程序-----环境配置(IDEA+javaFX库+JavaFX Scene Builder 2.0+Maven)

前言 最近在学习SpringBoot和javaFX,准备做个小项目练练手,本文章记录一下使用SpringBoot开发javaFX的环境配置。 准备 IDEA JDK11以上(在JDK11里面将Java FX独立开了,所以要使用JDK11开发JavaFX应用就要将相关的库导入) javaFX库: https://gluonhq.com/products/javafx/ JavaFX Scene Builder 2.0(可视化工具,加速JavaFX图形界面的开发,强烈建议安装) JavaFX Scene B

Rightstar的博客 5269

Javafx中切换输入法

Javafx中切换输入法

atp069121的博客 1330

Permagon:JavaFX与Spring框架功能整合的开发框架

Permagon框架是一个先进的、模块化的Java应用开发框架,旨在简化企业级桌面应用的开发流程。它的设计受到了现代Web应用和移动应用开发理念的影响,同时提供了丰富的API集合和工具来支持应用的快速迭代和发布。Permagon不仅仅是一个技术堆栈,它还提供了一整套设计原则和最佳实践,这些都有助于解决常见的开发难题,如代码复用性、模块化和应用扩展性等。Permagon框架以其高度的可定制性以及对开发者的友好性著称,它允许开发者通过简单配置,迅速构建起功能完备的桌面应用。

weixin_42598278的博客 967

Java FX - 输入框限制及屏蔽关键字方法

有关输入框的两个玩法: 1.输入框限制,正则表达式限制输入必须输大写的A~Z 2.将用户输入的某些字符进行转换,如图是将"5"转化成大写的"五",实践操作中可以将骂人的脏话变成夸赞的语句、、 3.正则表达式的使用: 1. 数字:^[0-9]*$ 2. n位的数字:^\d{n}$ 3. 至少n位的数字:^\d{n,}$ 4. m-n位的数字:^\d{m,n}$ 5. 零和非零开头的数字:^(0|[1-9][0-9]*)$ 6. 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(

贾岚翔的博客 1940

GPU大规模集群运维

CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的通用并行计算平台和程序模型,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以使用C语言来为CUDA架构编写程序,所编写出的程序可以在支持CUDA的处理器上以超高性能运行。CUDA官方文档CUDA的软件环境允许开发者使用C++等高级编程语言开发程序。

weixin_42795092的博客 1740

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 223

Java屏蔽输入法_输入框禁止输入法

禁止输入法形式:参数说明形式:active 代表输入法为中文inactive 代表输入法为英文auto 代表打开输入法 (默认)disable 代表关闭输入法具体例子如下:禁止input 粘贴具体例子如下:onclick="this.select()" onpaste="return false" ondrop="return false" ondragenter="return false;"o...

weixin_29649047的博客 804

Jaspersoft Studio 6.20.0 免注册安装指南(附下载链接)

本文提供了Jaspersoft Studio 6.20.0社区版的免注册安装详细指南。文章介绍了绕过官网注册获取安装包的多种可靠途径,并逐步详解了从启动安装器到首次运行的全过程,帮助用户快速完成安装与基础配置,高效开启报表设计工作。

mars5的博客 1697

Java屏蔽输入法_关于强制切换输入法

inputmethodserver = new InputMethodService();button = (Button) findViewById(R.id.button1);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated ...

weixin_39795268的博客 544

UniApp实战:5分钟搞定后台持续定位与轨迹实时更新(附完整代码)

本文详细介绍了在UniApp中实现后台持续定位与动态轨迹地图系统的完整方案。针对物流配送、运动健身等场景,文章深入讲解了权限申请、坐标系选择、定位防抖优化、地图轨迹线(polyline)实时绘制等核心步骤,并提供了可复用的完整代码,帮助开发者高效解决App切后台定位停止、轨迹漂移等常见难题。

weixin_29266679的博客 484

Hierarchical Flow Partition(Top-down&&Bottom-up)

hierarchy flow是将设计切分成多个block,分别处理单个block,然后完成后,将它们进行拼接以完成最终的chip。一般划分为三个阶段:chip planning;physical budget就是pin assignmenthierarchy flow实现的方法有两种,一种是top-down,另一种是bottom-up,无论是哪种,都是都要通过flatten的方法分别全局范围进行优化实现。

qq_39493558的博客 3074

书:第一章 JAVAFX2.0简介

  第一章  JavaFX简介                                           JavaFX的2.0 Beta版是最新的JavaFX的主要更新版本。在JavaFX 2.0 Beta版推出了许多新功能的JavaFX 1.3不相容。如果您正在开发一个新的应用程序在JavaFX,建议您使用JavaFX 2.0 ...

小卓有话说 474

破解雪球网acw_sc__v2加密与无限debugger反爬策略

本文详细解析了雪球网的反爬机制,重点破解了其核心的acw_sc__v2加密参数与无限debugger反调试策略。通过实战案例,从抓包分析、逆向调试到算法还原,提供了完整的Python代码实现,帮助开发者掌握应对类似加密反爬的通用方法。

weixin_29207533的博客 1905

JavaFX2.0基础教程 之 架构和框架

1      JavaFX架构和框架 JavaFX2.0是基于Java技术构建的富客户端平台,使应用开发者易于创建和部署跨平台的富互联网应用(Rich Internet Application RIAs)。 图-1描述了JavaFX2.0的架构性组件构成。这部分将描述图表构成的每个组件以及这些组成部分如何交互。JavaFX公开APIs依存于真正运行JavaFX代码的应用引擎。它的构成子组件包括

轶枫的专栏 2万+

第一讲:halcon模板匹配捆绑测量矩形检测芯片针脚

使用halcon模板匹配捆绑测量矩形,检测位置发生变换的芯片针脚缺陷。

uiopmn1的博客 2995

Linux内核进程管理子系统有什么第五十一回 —— 进程主结构详解(47)

Linux内核进程管理子系统有什么第五十一回 —— 进程主结构详解(47)

phmatthaus的专栏 1386

从JavaFX 1.3迁移到JavaFX 2.0

几天前,我完成了将Modellus的源代码从JavaFX 1.3脚本迁移到JavaFX 2.0 Java语言的过程。 因此,我认为写关于我在此过程中学到的知识会很好。 我想指出,如果您想继续在JavaFX 2.0中使用JavaFX脚本,则可以使用Visage: http : //code.google.com/p/visage/ CustomNode类不再存在。 扩展组或区域以创建“...

最佳 Java 编程 292

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

书评:JavaFX 2.0:示例介绍

尽管Oracle在JavaOne 2010和JavaOne 2011上对JavaFX的更改使我从怀疑论者转变为对JavaFX的信奉者 ,但是JavaFX愿景的转变并非没有缺点 。 特别是,JavaFX图书市场一直很棘手,因为几乎所有可用的JavaFX图书都与1.x版本有关。 在这篇文章中,我回顾了撰写本书时我所知道的唯一一本完全专注于JavaFX 2.0的书 : Carl Dea的JavaF...

最佳 Java 编程 290

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

JavaFX学习之道:详解JavaFX架构与框架

JavaFX 2.0平台是基于Java技术的富客户端平台。它使应用程序开发者更加容易的开发和部署跨平台的富互联网应用(RIA)。JavaFX 2.0文档包含了JavaFX 2.0所提供的功能的概述。 图1描述了JavaFX 2.0平台的架构组件。后面的部分将对每一个组件进行逐一的描述。在JavaFX通用API的下面是用来运行JavaFX代码的引擎。这个引擎包括以下子组件:JavaFX高性能图

Java小迷的专栏 5690

【多媒体】富客户端应用程序GUI框架 JavaFX 2.0 简介

JavaFX是一个用于创建富客户端应用程序的GUI框架,它提供了丰富的图形、多媒体和动画功能。在JavaFX中,还可以使用简洁的代码来实现视频播放功能。

weixin_42369079的博客 2621

JavaFX基础:2:使用javafx-maven-plugin管理JavaFX应用

javafx-maven-plugin是一个Maven的插件,用于提供在Maven中管理JavaFX应用的方式。只需要通过mvn jfx:run即可运行JavaFX应用。在这篇文章中,我们利用在IDEA的IDEA中生成的Sample代码,结合javafx-maven-plugin介绍如何在mvn中进行JavaFX应用的构建和运行。

知行合一 止于至善 2万+

在JavaFx中使用StyledLayerDescriptor(SLD)1.0和1.1版本进行地图美化实践

本文将重点讲解如何在JavaFx中进行地图美化的开发,同时对JavaFX进行扩展,支持地图的缩放等操作。在讲解SLD时,不仅讲解如何创建模式样式,同时讲解在Geotools中,如何加载SLD1.0.0的版本和SLD1.1.0的版本,通过实例代码的形式给大家展示如何如正确的解析并展示矢量数据。

夜郎King的博客 8726

JavaFX2.0基础教程 之 认知概览

JavaFX概览 JavaFX认知 JavaFX平台是java客户端设计演进,使应用开发者易于创建和部署跨平台且表现一致的Rich Internet Application(RIAs)。是由Java技术构建,基于高性能硬件加速的媒体和图形引擎,JavaFX平台提供了一套丰富的图形和媒体API,简化了数据驱动的企业客户端部署。 作为Java生态体系的一部分,投资于javafx平台将使java开

轶枫的专栏 6134

JavaFX 2.0布局窗格– GridPane

毫无疑问, GridPane是JavaFX 2.0中功能最强大,最灵活的布局窗格。 它在由行和列组成的灵活网格中布置其子项,与Swing的GridBagLayout或HTML的表格模型非常相似。 这种方法使该窗格非常适合于任何形式的表单(例如网站上的联系表单)。 您有能力... 将任何Node应用于GridPane的单元格(由列和行指定) 让Node跨越多个列/行 使Nod...

最佳 Java 编程 7685

JavaFX Scene Builder 2.0安装和使用

在https://www.oracle.com/java/technologies/javafxscenebuilder-1x-archive-downloads.html下载JavaFX Scene Builder 2.0 双击下载之后的文件 下一步 可以更改安装位置也可以默认位置,然后点安装 完成 创建项目 菜单File -> New -> Others… -> JavaFX -> JavaFX Project application的子包中,生成名为Main.java.

WCR_520的博客 3546
上一篇: Weed-cs项目开源
下一篇: JAVAFX2.0书:第二章 体系结构及框架-2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值