JavaFX发现之旅

来源:互联网 发布:司法行政网络信息化 编辑:程序博客网 时间:2024/04/29 18:53

JavaFX发现之旅

Tags:Apollo  , Flex  , Java  , JavaFX 

最近Java社区最火的就是JavaFX Script了,并且Sun公布了JavaFX Script源网站openJfxJavaFX ScriptSunRIA解决方案,是一用于写能在支持JavaPC和手机上运行的件的更简单的脚本言。写的程序可以直接在Java机上运行(Java 1.5以上),从其运行的境、方式看,Adobe Apollo劲敌,其运行的效果大家可以看官方演示程序(注意,需要Jre 1.5),效果很惊人的哦。下面是其中一个演示的效果

来看,JavaFX Script是个JavaVRML的混合体,既有Java点(面向象,承等等),又有VRML点(形描述)。在IDE支持方面,目前以及推出NetBeansEclipse的插件,然功能不是很大,但相信等JavaFX Script正式布的候,IDE方面的支持会持的,比如可模式的UI编辑法提示等。

OpenJfx官方有一个基于NetBeansJavaFX 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对话框中,在NameJavaFX

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.  NextFinish

12.  Verification对话框中选择Install All

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

新建JavaFX工程

以上准好了JavaFX ScriptEclipse开发环境,在我实际开JavaFX Script之旅。

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

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

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

3.      Next

4.      Project NameJavaFXapp

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.      FinishHelloWorld.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.      Frametitlewidthvisiblecontent属性赋值

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!";

运行果将变为所示:

注意示例通JavaFXbind操作将labeltext属性初始化modesaying属性。在里,bind操作声明增量更新。意味着任何model.sayinglabeltext属性都将更新相同的

入构件,如按复选框和文本入域,模式属性和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实现)。当modelsaying属性更新到与文本域相同值发,因为该表达式指定窗口的title属性依modelsaying属性,表达式被重新算并且窗口的title属性更新到上面的果。但是,这样的内容表达依然是声明 

 
原创粉丝点击