`
txf2004
  • 浏览: 7042425 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JavaFX脚本入门

阅读更多
原文地址:http://www.onjava.com/pub/a/onjava/2007/07/27/introduction-to-javafx-script.html

JavaFX是什么?

在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后缀。)
运行tutorial.jnlp指南
图1 运行tutorial.jnlp指南

花些时间浏览一下这些示例及其源码。其中有些有趣的效果使用几行JavaFX代码就可以实现。
如果你仍旧对JavaFX的功能有所怀疑,那就看一下这两个demo:StudioMoto和Tesla Motors网站的部分重建。点击JavaFX Script Studiomoto DemoJavaFX 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)。
运行JavaFXPad编辑器
图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所示的框架:
在NetBeans5.5中运行Hello World程序
图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}");
insert
122aslastintomynumbers;
System.out.println(
"Afterinsertingatthe
endthe"122"value:{mynumbers}");
insert
78beforemynumbers[3];
insert
11aftermynumbers[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。这个功能由selectforeach操作符实现。这里有两个从一个区间获得偶数的例子(一个使用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

//JavaFXselectandforeachoperators
importjava.lang.*;
importjavafx.ui.*;
importjavafx.ui.canvas.*;
Frame
...{
centerOnScreen:
true
visible:
true
height:
500
width:
500
title:
"Foreachdemo..."
onClose:operation()
...{System.exit(0);}
content:ScrollPane
...{
background:white
view:Canvas
...{
content:bindforeach(iin[
1..8],jin[1..8])
Rect
...{
x:i
*30
y:j
*30
width:
30
height:
30
http://imag
分享到:
评论

相关推荐

    javafx入门教程

    本教程将指导您从基础知识开始学习JavaFX脚本语言。 JavaFX概述 JavaFX是一种新的脚本语言,由Sun Microsystems开发,用于开发RIA。JavaFX脚本语言基于Java平台,可以在Java虚拟机(JVM)上运行。JavaFX的主要特点...

    JavaFX Script 脚本编程语言

    JavaFX Script 编程语言入门教程 JavaFX Script 编程语言是 Java 多媒体技术方面的应用,设计 JavaFX 入门编程。 JavaFX Script 编程语言基于 Java 平台,因此要求在系统上安装 JDK 5 或 JDK 6(6 更快)。在开始...

    Learning the JavaFX Script Programming Language.pdf

    《深入学习JavaFX脚本编程语言》:现代GUI应用程序开发的高效工具 一、JavaFX脚本编程语言概述 JavaFX脚本编程语言是专为创建具有现代化图形用户界面(GUI)的应用程序而设计的一种高级编程语言。它以其声明式的...

    javaFX 入门教程

    **JavaFX脚本** 作为一种声明式的、静态类型的编程语言,具备以下特点: - **高生产力**:支持简洁的语法,易于编写复杂的用户界面。 - **静态类型**:有助于提高代码质量和可维护性。 - **与Java无缝集成**:可以...

    JavaFX2.0基础教程.pdf

    Oracle宣布停止对JavaFX脚本语言的支持,并将JavaFX的部分API集成到Java标准库中,使得JavaFX成为开发跨平台富客户端应用的理想选择。 - **JavaFX2.0新特性**: - **API整合**:将原有的JavaFX脚本API集成到了Java...

    JavaFx入门教程

    JavaFx入门教程 JavaFx是Sun公司于2007年发布的一种RIA(Rich Internet Application)解决方案,旨在提供一种更简单的脚本语言,以便编写能够在支持Java的PC和手机上运行的应用软件。JavaFx Script是JavaFx的核心...

    javaFx script

    - **类编写入门**:简要介绍编写自定义类的基本步骤。 #### 小结 JavaFX Script是一种强大且灵活的语言,它极大地简化了创建具有丰富用户界面的应用程序的过程。通过官方教程的学习,开发者不仅可以掌握JavaFX ...

    javaFx实现教师绩效管理系统

    javafx+mysql实现的教师绩效管理系统,zip里面包含数据库脚本。该部分代码适合初学入门或者课程设计,希望能够共同进步。

    JavaFX官方文档

    在JavaFX Script中,"脚本"由一个或多个声明或表达式组成。脚本的执行过程是逐步进行的,从上到下依次评估。这与Java的控制流程可能有所不同,后者通常涉及更复杂的控制结构如循环和条件语句。 后续章节会深入探讨...

    JavaFx开发教程

    1. **JavaFX Script入门** - **软件准备**:下载并安装JDK 5或JDK 6(建议使用JDK 6以获得更好的性能)。 - **开发环境选择**:可选IDE或纯文本编辑器,推荐使用NetBeans IDE 6.5进行开发。 - **IDE优点**:提供...

    JavaFX2.0基础教程(整合版)

    - **Oracle 接手**:Oracle 收购 Sun 后,在 2010 年 JavaOne 大会上宣布将停止对 JavaFX 脚本语言的支持,并将 JavaFX 的 API 导入 Java,这意味着 Java 开发者无需学习新的脚本语言即可利用 JavaFX 的功能。...

    JavaFX Script 语言教程(面向Swing 程序员).rar

    JavaFX Script 是一种用于创建富互联网应用程序(RIA)的编程语言,由Sun Microsystems(后被Oracle收购)开发,主要用于构建桌面和移动平台上的图形用户...这个教程将帮助他们快速入门,并充分利用JavaFX的强大功能。

    [JavaFX.2.0:Introduction.by.Example].Carl.Dea.文字版.pdf

    在2010年的JavaOne大会上,Oracle宣布了JavaFX的发展路线图,并计划逐步淘汰JavaFX脚本语言,重新构建JavaFX以更好地服务于Java开发者社区。 #### 总结 《JavaFX 2.0:Introduction by Example》是一本全面介绍了...

    Javafx Script - Dynamic Java Scripting For Rich Internet-Client-Side Applications (Apress, 2007).pdf

    JavaFX Script是一种基于Java的脚本语言,它结合了Java的强大特性和动态脚本语言的灵活性。JavaFX Script最初由Sun Microsystems于2007年的JavaOne大会上发布,并被视为构建丰富内容应用程序的关键工具之一。它提供...

    JavaFX Script - Dynamic Java Scripting for Rich Internet-Client-Side Applications

    ### JavaFX Script:动态Java脚本为富互联网客户端应用 #### 引言 随着技术的不断进步和发展,软件开发人员面临着越来越复杂的用户界面设计需求。为了满足这些需求,Sun Microsystems 推出了 JavaFX Script,这是...

    javaFX sun 官方教程(CHM格式)

    教程目录 教程概述 1. 入门 2. 编写脚本 3. 使用对象 4. 数据类型 5. 序列 6. 运算符 7. 表达式 8. 数据绑定和触发器 9. 编写您自己的类 10. 软件包 11. 访问修饰符

    Pro-Java-FX-2-A-Definitive-Guide-to-Rich-Clients-with-Java-Technology

    - **FX Script**:这部分讲解了FX Script,这是一种用于编写JavaFX应用程序的脚本语言。 - **FX Markup**:书中还介绍了一些FX Markup语言的特点和使用方法。 #### 十二、附录概览:深入了解Visage语言 附录部分...

    Java.FX.in.Action.Edition.November.2009

    - **入门示例**:通过一个简单的示例项目,本书向读者展示了如何使用JavaFX创建基本的用户界面,并实现基本的交互功能。 - **实现细节**:这些示例通常会涉及到如何定义窗口、添加控件以及响应用户的输入事件等基本...

    JavaOnRaspberryPi:《 Raspberry Pi上的Java入门》一书的源代码和脚本

    Raspberry Pi上的Java入门在该项目中,您可以找到”一书中描述的所有源代码和脚本。内容一切都根据本书中的章节进行组织。 在每一章中,您都可以找到(但并非总是如此): 像这样的自述文件,其中包含有关本章内容的...

Global site tag (gtag.js) - Google Analytics