JavaFX发现之旅

JavaFX极简入门(利用FXML文件)到精通 背景: 下面我来介绍一下,如何用JavaFX在两周里(实际为一周)来写出一个界面美观,且大气的GUI。 首先要介绍一下JavaFX是个什么东东:刚刚接触Java的同学一定会知道Java的图形界面库Swing,或者AWT,他们当然都比较老了,或者说过时了,他们都没有做到界面与代码分离(会有好多的坐标位置什么的),所以写起来会麻烦,想要做的美观的话对于新手小白来讲真... 阅读详情

JavaFX发现之旅

Tags:Apollo  , Flex  , Java  , JavaFX 

最近Java社区最火的就是JavaFX Script的发布了,并且Sun同时公布了JavaFX Script的开源网站:openJfx,JavaFX Script是Sun的RIA解决方案,是一种用于编写能够在支持Java的PC和手机上运行的应用软件的更简单的脚本语言。其编写的程序可以直接在Java虚拟机上运行(Java 1.5以上),从其运行的环境、方式看,这是Adobe Apollo的劲敌,其运行的效果大家可以查看官方的演示程序(注意,需要Jre 1.5),效果很惊人的哦。下面是其中一个演示的效果图:

从语法来看,JavaFX Script是个Java和VRML的混合体,既有Java的优点(面向对象,继承等等),又有VRML的优点(图形描述)。在IDE支持方面,目前以及推出NetBeans和Eclipse的插件,虽然功能还不是很强大,但相信等JavaFX Script正式发布的时候,IDE方面的支持会持续加强的,比如可视模式的UI编辑、语法提示等。

OpenJfx官方有一个基于NetBeans的JavaFX Script 起步,考虑到Flex开发中eclipse(FlexBuilder)的使用情况,今天我们将基于Eclipe来一起开始我们的JavaFX Script发现之旅。文中除了将原文的使用NetBeans更改为Eclipse,其他均翻译自官方文档。

·                               安装JavaFX Script For Eclipse插件

·                               新建JavaFX工程

·                               创建我们第一个JavaFX程序

·                               运行我们的第一个JavaFX程序

·                               语法解释

·                               添加动态行为

要完成我们今天的旅途,您首先需要安装Eclipse 3.2.2,以及安装FlexBuilder也可以,另外如果您的Jre版本低于1.5请升级。

安装JavaFX Script For Eclipse插件

首先我们来安装JavaFX Script For Eclipse插件,官方的安装说明在这里,安装步骤如下:

1.      启动Eclipse/FlexBuilder;

2.      从主菜单选择 Help > Software Updates > Find and Install;

3.      在Install/Update对话框中, 选择Search for New Features to Install然后点击Next;

4.      点击New Remote Site;

5.      在New Update Site对话框中,在Name中输入JavaFX;

6.      在URL中输入:http://download.java.net/general/openjfx/plugins/eclipse/site.xml;

7.      点击OK;

8.      在Install窗口中点击Finish;

9.      在Updates对话框中选择JavaFX > JavaFX node > 然后点击Next;

10.  接受协议并点击Next;

11.  点击Next和Finish;

12.  在Verification对话框中选择Install All;

13.  安装完成后重启Eclipse,JavaFX Script Eclipse 插件就安装完成了。

新建JavaFX工程

以上准备好了JavaFX Script的Eclipse开发环境,现在我们来实际开始JavaFX Script之旅。

我们需要创建一个Java工程来存放我们的JavaFX Script文件。

1.      从Eclipse的主菜单选择New > Project

2.      在选择工程向导窗口中选择Java Project

3.      点击Next

4.      输入Project Name为:JavaFXapp

5.      不需要添加JavaFX Script Lib,运行JavaFX Script程序时,Eclipse会自动添加并设置环境的。点击Finish,完成。
现在JavaFXapp工程就创建好了,如下图:

创建我们第一个JavaFX程序

现在,开始用Eclipse创建我们第一个JavaFX HelloWorld 程序。

1.      右击JavaFXapp > New > Other

2.      在New窗口中选择JavaFX > JavaFX File,

3.      点击Next,在File name输入:HelloWorld.fx,

4.      点击Finish,HelloWorld.fx就被添加到JavaFXapp工程中,并且在右边自动被打开了。

5.      将下面代码粘贴到HelloWorld.fx中:

import javafx.ui.*;

Frame { 

title: "Hello World JavaFX"

width: 200

height: 50

content:

Label {     text: "Hello World"  } 

visible: true

  }

运行我们的第一个JavaFX程序

现在让我们用Eclipse运行我们的第一个JavaFX程序。

1.      在Eclipse主菜单,选择Run > Run...:

2.      在Run窗口中,双击JavaFX Application:

3.      然后在Name输入:HelloWorld:

4.      点击Arguments,在Program arguments中输入我们的JavaFX程序名称:HelloWorld,这里的名称与Java类名一致,如果我们的HelloWorld存放在prac目录下,那们就输入prac.HelloWorld:

5.      点击Run,自动编译运行,将出现下面运行窗口:

恭喜,我们现在完成了第一个JavaFX程序。

语法解释

正如您在前面章节看到的,JavaFX语言提供了一种用于表述用户界面组件结构和内容的声明式的语法(Declarative Syntax)。为了帮助您理解发生了什么,我们使用类似于Swing的纯程序的形式(类似AS3)重写以上代码:

var win = new Frame();win.title = "Hello World JavaFX";win.width = 200;var label = new Label();label.text = "Hello World";win.content = label;win.visible = true;

以上源代码同样是正确的JavaFX程序并且和前面的运行效果相同。

以下同时说明了以上声明式和程序式方式的代码实际发生了什么:

1.      调用Frame类构造器创建一个新的Frame。

2.      对Frame的title、width、visible和content属性进行赋值。

3.      在content属性的赋值过程中,调用Label类构造器创建了一个新的Label,并且给它的text属性赋了一个值。

但是,即使像这里这么极端简单的示例中,描述性语法编写的程序的意识还是更加容易理解。

因为声明式编程(declarative programming)可以从单个表达式创建程序,如前面第一个例子,表达式的根一般为一个生成程序的对象图形的对象分配表达式(构造器)。

添加动态行为(dynamic behavior)

上面的“Hello World”程序没有动态行为。在JavaFX中创建一个带动态行为的图形用户接口,即创建一个属性依赖其他对象属性值的图形用户接口组件(和Flex中的绑定的概念一致)。这些其他对象可以是任何您觉得合适的代表您的应用状态的对象。因为该GUI组件的属性依赖于另一个对象,它会自动反应任何时候您对另一个对象的修改。相应的,GUI组件是视图(View)而另一个对象就是模型(Model),下面是“Hello World”程序的Model/View版本:

import javafx.ui.*; class HelloWorldModel {  attribute saying: String;} var model = HelloWorldModel {  saying: "Hello World"}; var win = Frame {  title: "Hello World JavaFX"  width: 200  height: 50

 content: Label {    text: bind model.saying  }  visible: true};

运行程序显示如下:

如果model对象的saying改成下面这样:

model.saying = "Goodbye Cruel World!";

运行结果将变为下图所示:

注意该示例通过JavaFX的bind操作将label的text属性初始化为mode的saying属性。在这里,bind操作声明增量更新。这意味着任何时候model.saying改变,label的text属性都将更新为相同的值。

对于输入构件,如按钮、复选框和文本输入域,模式属性和GUI组件之间的连接可以是双向的。

考虑以下示例:

import javafx.ui.*; class HelloWorldModel {  attribute saying: String;} var model = HelloWorldModel {  saying: "Hello World"}; var win = Frame {  title: bind "{model.saying} JavaFX"  width: 200  height: 50  content: TextField {  value: bind model.saying}  visible: true};

运行该程序,显示如下:

如果您在文本输入域中输入其他内容然后敲回车,窗口的标题将相应的改变:

在这一情况下,文本域的值的更新是用户输入的结果(通过TextField类的实现)。当model的saying属性更新到与文本域相同值发生时,因为该表达式指定窗口的title属性依赖于model的saying属性,表达式被重新计算并且窗口的title属性更新到上面的结果。但是,这样的内容表达依然是声明。 

 
javaFX入门感受 NULL 博文链接:https://ganting.iteye.com/blog/335155 立即下载

相关推荐

Zemax操作33--5倍激光扩束器

5倍扩束

lzy750750的博客 2934

谈谈对于JavaFX开发的感想

从2008年发布的第一个JavaFX版本开始,在这几年里,断断续续的利用业余时间进行JavaFX的学习和开发,也怀有用JavaFX进行游戏开发的想法。  不过目前决定暂时减少JavaFX游戏开发相关的内容,仅仅将JavaFX作为一个Java的GUI来进行开发自己的工具和软件,除非后续Oracle有重大的更新和改变现状的措施。  下面我会谈谈在JavaFX开发中遇到的一些问题,以及和其他几种技术

Wing的博客 1万+

保姆级教程:用ROS2 Humble + Gazebo Classic 从零搭建一个能键盘控制的差分AGV模型

本文提供了一份详细的ROS2 Humble与Gazebo Classic教程,指导用户从零开始搭建一个键盘控制的差分AGV模型。内容涵盖环境配置、Xacro文件设计、Gazebo仿真集成以及键盘控制实现,特别针对常见问题提供解决方案,帮助开发者快速掌握ROS2机器人仿真技术。

weixin_30387423的博客 169

JavaFX发现之旅:JavaFX Script With Eclipse 入门(第一部分)

pytruth1002 发表于 2007-06-01 17:07:13 作者:feiy     来源:feiy 评论数:4 点击数:474     投票总得分:5 投票总人次:1 关键字:JavaFX 摘要:最近Java社区最火的就是JavaFX Script的发布了,并且Sun同时公布了JavaFX Scrip

yq76034150的专栏 2884

Tera Term介绍和使用指南

Tera Term 是一个用于 Windows 操作系统的免费终端模拟器和串口通信软件。它主要用于在计算机和其他设备之间建立串口通信连接,例如通过串行线缆连接到设备如路由器、开发板或嵌入式系统。Tera Term 支持多种通信协议和功能,包括 Telnet、SSH 和串口通信。提供了一个终端窗口,模拟了常见的终端类型,如VT100。支持通过串口与设备进行通信,可用于与嵌入式系统、微控制器等设备进行连接。提供 Telnet 和 SSH 功能,可用于通过网络连接到远程主机。

weixin_49423593的博客 1万+

嵌入式系统启动流程解析:ROM Code、Bootloader与启动代码的协同工作

本文深入解析嵌入式系统从通电到运行的完整启动流程,详细阐述了ROM Code、Bootloader与启动代码三者如何像接力赛般协同工作。ROM Code作为芯片固化的初始引导程序,负责硬件自检并加载Bootloader;Bootloader作为系统总指挥,初始化关键硬件并加载操作系统内核;启动代码则为C语言运行环境铺平道路。理解这三者的分工与协作,是进行系统移植和解决启动问题的关键。

dd012的博客 554

JavaFX落入尴尬境地,发布近两年竟收效甚微

前年的时候我开始学习JavaFX,我想这是学习其他领域的计算机编程的很好的方法(因为我主要是做PHP的网址开发)。Sun微系统公司将 JavaFX看做是下一个Big Thing,因而Sun从其他项目和部门中抽取了最优秀的人才以便最大化地专注于JavaFX的开发。到现在已经接近两年了,Sun不断提升JavaFX,并将它定位为可用的富客户端技术,以及与Adobe的Flex以及Microsoft的Sil

phphot 2864

IPV6基本配置

IPV6配置,DHCPV6,华为模拟器,IPV6的M/O标志位

路漫漫其修远兮 4667

javafx 美观设计_JavaFX是否无法赢得设计师的青睐?

Kirill Grouchnikov发表了一个博客,使他对JavaFX的看法非常清晰。 他写道:“ JavaFX是火车残骸 。” 根据Grouchnikov的说法,JavaFX的问题在于设计师根本不感兴趣。 这导致没有一个“看起来不错的重要JavaFX应用程序”。 他使用最近的JavaFX RIA示例挑战规则更改来证明JavaFX对设计人员没有吸引力。 最初,挑战要求每个团队都由一名开发人...

415

把 sy-* 带进 ABAP CDS:ABAP 7.50 里的环境信息新姿势($session 与 @Environment.systemField 实战)

摘要:ABAP 7.50在CDS视图中引入两种获取环境信息的方式:1)直接使用$session会话变量读取用户、客户端和系统语言;2)通过@Environment.systemField注解参数,由Open SQL自动注入系统字段。$session方式简单但依赖Open SQL访问路径,非ABAP环境下可能失效;注解参数方案更工程化,依赖关系明确且支持测试。建议ABAP体系内优先使用$session,对外接口采用参数化方案。两种方式各有适用场景,正确选择可避免潜在风险。(148字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 156

巡检类机器人电池容量计算方法论(原理+算法+真实案例)

摘要:本文系统阐述了巡检机器人电池容量的计算方法,重点解析了;能量平衡;核心原理和三种主流算法。通过光伏电站履带式巡检机器人的真实案例,详细演示了从工况拆解、功耗采集到容量计算的完整流程。文章指出:室内轻载场景可采用静态平均功耗法,户外常规工况推荐动态负载积分法,而复杂环境需采用融合估算算法。特别强调需考虑温度修正(冬季容量衰减20%)、冗余系数(1.2-1.5)和放电深度(磷酸铁锂DoD取80%)等关键参数。

start_up_go的博客 243

JavaFX发现之旅 JavaFX Script With Eclipse 入门(第三部分)

标签(Labels)JavaFX Label类支持HTML内容。使用Label您可以使用HTML和CSS创建样式文本和图像,非常类似于典型的Web应用。此外,通过使用JavaFX嵌入表达式,您可以在Swing应用中象Web页面作者使用类似JSTL或Velocity工具一样创建动态的HTML内容。考虑以下虚拟购物车示例:import javafx.ui.*; class It

我的世界我的梦 1322

高通平台N4单路输入的720P相机预览

N4的一路720P Camera作为MIPI摄像头使用

llw21680的专栏 165

JavaFX发现之旅:JavaFX Script With Eclipse 入门

最近Java社区最火的就是JavaFX Script的发布了,并且Sun同时公布了JavaFX Script的开源网站:openJfx,JavaFX Script是Sun的RIA解决方案,是一种用于编写能够在支持Java的PC和手机上运行的应用软件的更简单的脚本语言。其编写的程序可以直接在Java虚拟机上运行(Java 1.5以上),从其运行的环境、方式看,这是Adobe Apollo的劲敌,

Grey_Guo的专栏 702

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

JavaFX发现之旅:JavaFX Script With Eclipse 入门(第二部分)

接第一部分,本章将讨论目前JavaFX语言可用的各种GUI组件并且给出一些如何使用的示例。我们会同时对比Swing的GUI组件进行讨论。我们将分四个章节完成GUI组件的讲解,本章要阐述的GUI组件如下:边框和布局管理器 菜单 标签 边框和布局管理器在JavaFX语言中,边框和布局管理器的使用同样也是声明性的。每个Swing/AWT布局管理器都被封装为一个Java

Grey_Guo的专栏 829

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

JavaFX发现之旅(3) JavaFX Script With Eclipse 入门

标签(Labels) JavaFX Label类支持HTML内容。使用Label您可以使用HTML和CSS创建样式文本和图像,非常类似于典型的Web应用。此外,通过使用JavaFX嵌入表达式,您可以在Swing应用中象Web页...

ciyi1125866526的博客 133

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

JavaFX发现之旅(2):JavaFX Script With Eclipse 入门

接第一部分,本章将讨论目前JavaFX语言可用的各种GUI组件并且给出一些如何使用的示例。我们会同时对比Swing的GUI组件进行讨论。 我们将分四个章节完成GUI组件的讲解,本章要阐述的GUI组件如下: 边框和布局管理...

ciyi1125866526的博客 186

Idea配置javafx项目

** Idea配置Javafx项目 ** 下载 首先下载Javafx文件可以去这个网站下载:[下载JavaFX相关文件](https://gluonhq.com/) 配置 当然,你的电脑要安装有Javase,Java8本身有Javafx,这里讲的是Java8之后的版本配置javafx 打开idea 点创建新的项目我这里的软件汉化了 创建项目 jdk这里我选择最新的14然后点击下一个,最后完...

weixin_43886909的博客 6079

JavaFx的学习之旅

这里写自定义目录标题1.创建JavaFx的Maven项目1.1.目录结构1.2.添加pom.xml 1.创建JavaFx的Maven项目 1.1.目录结构 将创建的项目修改为以下目录 1.2.添加pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven

jingchao1998的博客 332
上一篇: Sun CTO谈JavaFX Mobile和JavaFX Script
下一篇: 用纯JAVA语言实现读取MAC地址
SunnyJavaMoon
博客等级 码龄21年 20粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值