原文地址:
http://www.onjava.com/pub/a/onjava/2007/07/27/introduction-to-javafx-script.htmlJavaFX是什么?
在2007年春季Sun发布了一个新的框架,叫做JavaFX。这只是一个通用性的名字,因为JavaFX有两个主要的组成部分:脚本(Script)和移动(Mobile),并且,将来Sun会开发为它开发更多的部分。
JavaFX的核心是JavaFX脚本,它是一种声明型的脚本语言。它和Java代码非常不同,但是却与Java类保持了高度的交互性。JavaFX脚本的很多类被设计用来更加容易地实现Swing和Java2D功能。使用JavaFX脚本,你只需要几行简单易懂的代码就可以开发GUI、动画和文字及图像炫酷效果。另外,还可以把Java和HTML代码封装到JavaFX脚本中。
第二个组成部分,JavaFX移动(JavaFX Mobile),是用来为移动设备开发Java应用的平台。最终它必将成为JavaFX脚本的主要平台,但是现在和本文内容并不相关。
JavaFX应用程序的一些示例(Some Examples of JavaFX Applications)
在我们开始学习一门新的语言之前,先看一些JavaFX代码的示例。可以在
JavaFX的官方网站上找到一些很好的示例资源。点击
JavaFX脚本2D图形指南(JavaFX Script 2D Graphics Tutorial)下载这些示例。在下载完成后,只需双击
tutorial.jnlp文件。几秒后,你就应该可以如图1所示的程序(如果没有看到,那么你必须配置Java Web Start支持
.jnlp后缀。)
图1 运行tutorial.jnlp指南
花些时间浏览一下这些示例及其源码。其中有些有趣的效果使用几行JavaFX代码就可以实现。
如果你仍旧对JavaFX的功能有所怀疑,那就看一下这两个demo:StudioMoto和Tesla Motors网站的部分重建。点击
JavaFX Script Studiomoto Demo和
JavaFX Script Tesla Demo可以下载它们的demo。它们都需要使用Java Web Start来运行,根据系统配置的不同,它们可能自动启动,或者需要手动运行下载.jnlp文件。
下载和安装JavaFX(Download and Install JavaFX)
如果你有兴趣学习开发JavaFX应用程序,那么你应该知道至少三种使用JavaFX的工作方式。同样,了解JavaFX应用程序不是基于浏览器的也非常重要。最简单、最快的方式是基于一个称为JavaFXPad的轻量级工具。使用这个工具最大好处是,可以几乎是立即看到在编辑器上做的任何改变的效果。点击
JavaFX Script JavaFXPad Demo从Project OpenJFX上下载这个工具。再次说明,需要使用Java Web Start运行该工具(见图2)。
图2 运行JavaFXPad编辑器
使用JavaFX脚本的另外一个方式是使用NetBeans5.5的JavaFX脚本插件或者Eclipse3.2的JavaFX脚本插件(当然,在下载和安装这些插件之前,你必须已经安装了NetBeans 5.5或者Eclipse 3.2)。
如果你决定使用NetBeans5.5 JavaFX插件开始,那么在Project OpenJFX上的
JavaFX for NetBeans指南应该有所帮助。类似地,如果想使用Eclipse的JavaFX插件,就去
JavaFX for Eclipse。注意,本文的所有示例都在NetBeans5.5的JavaFX插件上通过了测试,同样应该可以在其他列出的方式中运行。
使用NetBeans5.5的JavaFX插件测试Hello World应用程序(Testing the Hello World Application with JavaFX Plug-In for NetBeans5.5)
按照学习新语言的同样方式,我们首先编写一个必不可少的Hello World程序:
代码表1
importjavafx.ui.*;
importjava.lang.System;
Frame...{
centerOnScreen:true
visible:true
height:50
width:350
title:"HelloWorldapplication..."
background:yellow
onClose:operation()...{System.exit(0);}
content:Label...{
text:"HelloWorld"
}
}
要在NetBeans5.5中开发和运行这个简单的示例,有以下步骤:
1、启动NetBeans5.5。
2、从主菜单中选择File->New Project。
3、在New Project窗口中,选择General,接着是Java Application(点击Next)。
4、在New Java Application窗口中,在Project Name文本框中输入“FXExample”。
5、在同一个窗口中,使用Browse按钮选择项目的存放位置。
6、取消选择“Set as main project”和“Create main class”复选框(点击Finish)。
7、右键点击FXExample->Source Packages,然后选择New->File/Folder。
8、在New File窗口中,选择Other,然后是JavaFX File文件类型(点击Next)。
9、在New JavaFX File窗口中,File Name输入“HelloWorld”,Folder输入“src”(点击Finish)。
10、从代码表1中复制代码,粘贴到
HelloWorld.fx中。
11、右键点击一个FXExample项目,选择Properties。
12、在Project Properties - FXExample中,从Categories面板中选择Run节点。
13、在Arguments文本框中输入“Hello World”(点击OK)。
14、右键点击
FXExample项目,选择Run Project选项。
如果一切正常,应该可以看到图3所示的框架:
图3 在NetBeans5.5运行Hello World应用程序
现在已经有了开发和运行JavaFX程序的软件支持。
JavaFX语法(JavaFX Syntax) 在开始JavaFX之前,我们首先看一下语法中的一些亮点(fine points)。如果已经熟悉Java语言的语法,那么JavaFX的大部分语法看起来非常相似,但是其中一些完全不同。
JavaFX的原始类型(JavaFX Primitive Types)
JavaFX支持四种原始类型:String(对应java.lang.String)、Boolean(对应java.lang.Boolean)、Number(对应java.lang.Number)和Integer(对应byte、short、int、long、BigInteger)。
JavaFX的变量(JavaFX Variables) JavaFX的变量使用var关键字声明,如下例所示:
varx:Number=0.9;
varname:String="John";
vary:Integer=0;
varflag:Boolean=true;
varnumbers:Number=[1,2,3,4,5];
JavaFX操作符(JavaFX Operators) 在Java中被熟知的操作符&&、||和!,在JavaFX中为:
Java:&& JavaFX:and
Java:|| JavaFX:or
Java:! JavaFX:not
JavaFX函数(JavaFX Functions) JavaFX支持函数。下面是一个简单的函数示例,包含了参数、变量声明和一个返回语句:
functiontaxes(x)...{
vart:Number=(19.0/100.0)*x;
returnt;
}
JavaFX if语句(JavaFX if Statement)在JavaFX中,可以通过if语句构造条件语句块。在if语句中必须使用花括号。如果else子句是另外一个if语句,可以跳过花括号:
if(place_your_condition_here)...{
//dosomething
}elseif(place_your_condition_here)...{
//dosomething
}else...{
//dosomething
}
JavaFX while语句(JavaFX while Statement) JavaFX的while语句类似Java的while语句。该语句中要必须包含花括号:
while(place_your_condition_here)
...{
//dosomething
}
JavaFX for语句(JavaFX for Statement)
for语句用来在一个区间(区间使用方括号[]和..符号表示)上循环:
//iwilltakethevalues:0,1,2,3,4,5
for(iin[0..5])
...{
//dosomethingwithi
}
JavaFX过程(JavaFX Procedures)
JavaFX的过程使用operation关键字标识。下面是一个简单的示例:
operationstartClock()...{
do...{
while(true)
...{
if(seconds>=360)
...{seconds=0;seconds=[0,6..360]dur60000linear;}
if(minutes>=360)
...{minutes=0;minutes=[0,6..360]dur3600000linear;}
if(hours>=360)
...{hours=0;hours=[0,6..360]dur43200000linear;}
}
}
}
JavaFX类(JavaFX Classes)
JavaFX的类使用class关键字标识。JavaFX的类可以继承多个类,使用extends关键字,其后面是逗号分隔的那些基类的名称。在花括号中,可以放置属性、函数和操作,如下例所示:
classOrder...{
attributeorder_nr:String;
attributeordertype:OrderinverseOrder.products;
attributeproducts:Order*inverseOrder.ordertype;
functiongetOrderNr():String;
operationaddOrder(order:Order);
}
注意,属性使用attribute关键字声明,并且函数体和过程体并不在类的内部。它们在类声明的后面定义,接下来就可以看到。
inverse子句是可选的,它说明了该属性和类的其他属性的双向关系。如此,JavaFX可以自动执行更新(插入<insert>、替换<replace>和删除<delete>)。
可以在Java.net上找到
更加完整的指南。
玩转JavaFX(Playing Around wih JavaFX)
在这一部分中,我们将会看到一系列示例,涵盖JavaFX各种功能和特性。这些示例的主要目的是使你熟悉JavaFX的代码编写和JavaFX程序的逻辑。第二个目的是使你确信,当你需要使用几行代码开发酷GUI、动画和漂亮的效果时,应该优先考虑JavaFX。所有的例子都将会介绍JavaFX的特定技巧。
每个例子之前都有一段描述,所有不要期望行注释。只要你亲自运行,所有的这些例子都应该是非常容易理解的,我们开始吧。
当需要使用System.out.println
打印变量/属性的值时,可以替换引号中间的其名称,如代码表2所示:
代码表2
//expressionswithinquotedtext
importjava.lang.System;
varmynumber:Number=10;
System.out.println("Numberis:{mynumber}");
结果是:Number is: 10
JavaFX支持一个非常有用的功能,即变量基数。这个功能使用接下来的三个操作符实现:
?:可选(可能是null)
+:1或多个
*:0或多个
代码表3:
//cardinalityofthevariable
importjava.lang.System;
varmynumbers:Number*=[1,2,7];
System.out.println("Numbersare:{mynumbers}");
结果是:Numbers are: 1 2 7
JavaFX中,变量声明时没有指定变量的类型。这并不会产生错误,因为JavaFX会根据变量的用法自动判断其类型。
代码表4:
//thevariable'stypeisoptional
importjava.lang.System;
vardays=["Monday,","Friday,","Sunday"];
System.out.println("Youhavetowork:{days}");
结果:You have to work: Monday, Friday, Sunday
可以使用sizeof操作符获得数组的大小:
代码表5:
//gettingthesizeofanarray
importjava.lang.System;
varlotto=[21,30,11,40,5,6];
System.out.println("Arraysize:{sizeoflotto}");
结果:Array Size: 6
要从一个数组中获得其满足条件的子数组,可以使用[]操作符。条件包含在[]中,求值结果为Boolean类型。这很类似于XPath谓词。
代码表6:
//usingthe[]operator-similartoitsuseinXPath
importjava.lang.System;
varmynumbers=[1,2,7,3,30,15,14,6,4];
varnumbers=mynumbers[n|n<10];
System.out.println("Numberssmallerthat10are:{numbers}");
结果:Numbers smaller than 10 are: 1 2 7 36 4
可以使用indexof操作符得到数组中某一位置上的元素:
代码表7:
//returningtheordinalpositionofanelementwithinanarray
importjava.lang.System;
varmynumbers=[1,2,7,3,30,15,14,6,4];
varnumber_four=mynumbers[indexof.==4];
System.out.println("Numberfour:{number_four}");
结果:Numberof four: 30
当需要向数组中插入一个元素时,可以使用insert语句和下面中的一个:
at first:插入到第一个位置
at last:插入到最后一个位置上(默认值)
before:在某个位置之前插入
after:在某个位置之后插入
从数组中删除一个元素时,可以使用delete语句:
代码表8:
//insertanddeletestatement
importjava.lang.System;
varmynumbers=[1,2,7];
System.out.println("Beforeinsertinganything:
...{mynumbers}");
insert10intomynumbers;
System.out.println("Afterinsertingattheend
the"10"value:{mynumbers}");
insert[8,6,90]asfirstintomynumbers;
System.out.println("Afterinsertingatthefirst
positionsthe"8,6,90"values:{mynumbers}");
insert122aslastintomynumbers;
System.out.println("Afterinsertingatthe
endthe"122"value:{mynumbers}");
insert78beforemynumbers[3];
insert11aftermynumbers[3];
System.out.println("Afterinsertingthe"78"
and"11"valuesbefore/afterthe3rd
element:...{mynumbers}");
deletemynumbers[.==122];
System.out.println("Afterdeleting:{mynumbers}");
结果:
Before inserting anything: 1 2 7
After inserting the 10 value atthe end: 1 2 7 10
After insertingthe 8, 6 and90 values at the first position: 8 6 90 1 2 7 10
After inserting the 122 value atthe end:8 6 90 1 2 7 10
After inserting the 78 and 1 value before/after the 3rd element: 8 6 90 78 11 1 2 7 10 122
After deleting: 8 6 78 11 1 2 7 10
JavaFX的一个重要的功能是其list comprehension。这个功能由select和foreach操作符实现。这里有两个从一个区间获得偶数的例子(一个使用select,一个是用foreach)。
代码表9:
//JavaFXselectandforeachoperators
importjava.lang.System;
functionodd(p:Number)...{
returnselectifromiin[1.0..p]
where(i%2==0.0);
}
varresult=odd(10.0);
System.out.println("Oddnumbers:{result}");
结果:Odd numbers:2.0 4.0 6.0 8.0 10.0
代码表10(和9相同,不过是使用foreach)
//JavaFXselectandforeachoperators
importjava.lang.System;
functionodd(p:Number)...{
returnforeach(iin[1.0..p]where(i%2==0.0))i;
}
varresult=odd(10.0);
System.out.println("Oddnumbers:{result}");
下面的例子说明foreach在创建漂亮的效果时非常有用。
代码表11
相关推荐
本教程将指导您从基础知识开始学习JavaFX脚本语言。 JavaFX概述 JavaFX是一种新的脚本语言,由Sun Microsystems开发,用于开发RIA。JavaFX脚本语言基于Java平台,可以在Java虚拟机(JVM)上运行。JavaFX的主要特点...
JavaFX Script 编程语言入门教程 JavaFX Script 编程语言是 Java 多媒体技术方面的应用,设计 JavaFX 入门编程。 JavaFX Script 编程语言基于 Java 平台,因此要求在系统上安装 JDK 5 或 JDK 6(6 更快)。在开始...
《深入学习JavaFX脚本编程语言》:现代GUI应用程序开发的高效工具 一、JavaFX脚本编程语言概述 JavaFX脚本编程语言是专为创建具有现代化图形用户界面(GUI)的应用程序而设计的一种高级编程语言。它以其声明式的...
**JavaFX脚本** 作为一种声明式的、静态类型的编程语言,具备以下特点: - **高生产力**:支持简洁的语法,易于编写复杂的用户界面。 - **静态类型**:有助于提高代码质量和可维护性。 - **与Java无缝集成**:可以...
Oracle宣布停止对JavaFX脚本语言的支持,并将JavaFX的部分API集成到Java标准库中,使得JavaFX成为开发跨平台富客户端应用的理想选择。 - **JavaFX2.0新特性**: - **API整合**:将原有的JavaFX脚本API集成到了Java...
JavaFx入门教程 JavaFx是Sun公司于2007年发布的一种RIA(Rich Internet Application)解决方案,旨在提供一种更简单的脚本语言,以便编写能够在支持Java的PC和手机上运行的应用软件。JavaFx Script是JavaFx的核心...
- **类编写入门**:简要介绍编写自定义类的基本步骤。 #### 小结 JavaFX Script是一种强大且灵活的语言,它极大地简化了创建具有丰富用户界面的应用程序的过程。通过官方教程的学习,开发者不仅可以掌握JavaFX ...
javafx+mysql实现的教师绩效管理系统,zip里面包含数据库脚本。该部分代码适合初学入门或者课程设计,希望能够共同进步。
在JavaFX Script中,"脚本"由一个或多个声明或表达式组成。脚本的执行过程是逐步进行的,从上到下依次评估。这与Java的控制流程可能有所不同,后者通常涉及更复杂的控制结构如循环和条件语句。 后续章节会深入探讨...
1. **JavaFX Script入门** - **软件准备**:下载并安装JDK 5或JDK 6(建议使用JDK 6以获得更好的性能)。 - **开发环境选择**:可选IDE或纯文本编辑器,推荐使用NetBeans IDE 6.5进行开发。 - **IDE优点**:提供...
- **Oracle 接手**:Oracle 收购 Sun 后,在 2010 年 JavaOne 大会上宣布将停止对 JavaFX 脚本语言的支持,并将 JavaFX 的 API 导入 Java,这意味着 Java 开发者无需学习新的脚本语言即可利用 JavaFX 的功能。...
JavaFX Script 是一种用于创建富互联网应用程序(RIA)的编程语言,由Sun Microsystems(后被Oracle收购)开发,主要用于构建桌面和移动平台上的图形用户...这个教程将帮助他们快速入门,并充分利用JavaFX的强大功能。
在2010年的JavaOne大会上,Oracle宣布了JavaFX的发展路线图,并计划逐步淘汰JavaFX脚本语言,重新构建JavaFX以更好地服务于Java开发者社区。 #### 总结 《JavaFX 2.0:Introduction by Example》是一本全面介绍了...
JavaFX Script是一种基于Java的脚本语言,它结合了Java的强大特性和动态脚本语言的灵活性。JavaFX Script最初由Sun Microsystems于2007年的JavaOne大会上发布,并被视为构建丰富内容应用程序的关键工具之一。它提供...
### JavaFX Script:动态Java脚本为富互联网客户端应用 #### 引言 随着技术的不断进步和发展,软件开发人员面临着越来越复杂的用户界面设计需求。为了满足这些需求,Sun Microsystems 推出了 JavaFX Script,这是...
教程目录 教程概述 1. 入门 2. 编写脚本 3. 使用对象 4. 数据类型 5. 序列 6. 运算符 7. 表达式 8. 数据绑定和触发器 9. 编写您自己的类 10. 软件包 11. 访问修饰符
- **FX Script**:这部分讲解了FX Script,这是一种用于编写JavaFX应用程序的脚本语言。 - **FX Markup**:书中还介绍了一些FX Markup语言的特点和使用方法。 #### 十二、附录概览:深入了解Visage语言 附录部分...
- **入门示例**:通过一个简单的示例项目,本书向读者展示了如何使用JavaFX创建基本的用户界面,并实现基本的交互功能。 - **实现细节**:这些示例通常会涉及到如何定义窗口、添加控件以及响应用户的输入事件等基本...
Raspberry Pi上的Java入门在该项目中,您可以找到”一书中描述的所有源代码和脚本。内容一切都根据本书中的章节进行组织。 在每一章中,您都可以找到(但并非总是如此): 像这样的自述文件,其中包含有关本章内容的...