Sun确实反应太慢,在Adobe Flash平台已经可以开发产品级RIA应用的时候,它给出的road map还是慢慢腾腾:
2008年7月,Sun将开放JavaFX Desktop SDK
2008秋,JavaFX Desktop 1.0 发布
2009春,JavaFX Mobile and TV 1.0发布
也就是说,截至今天,1.0依然在按计划进行中,我们体验的只是Preview版本(Sun也不建议用这个版本进行产品开发),似乎让人灰心,但没关系,相信Sun可以后来居上,譬如NetBeans之于Eclipse(当然它们至今仍未分高下)。从上面也可以看出,JavaFX Desktop和JavaFX Mobile and TV 都会发布,似乎又回到了1995年时候的Sun目标。
OK,先让我们来看一下JavaFX到底是什么。
JavaFX Preview SDK 是JavaFX platform的体验版本。这一版本是定位于web脚本开发人员和那些想事先体验JavaFX技术和工具的家伙。这一SDK同样包含"Nile Project",这是一套工具和插件,能让脚本开发人员用拖放的方式建立图形化的东西。运行JavaFX Application需要:
1.Java SDK 1.6 Update 7或更新,最好是Update 10
2.JavaFX Preview SDK (上面说了,JavaFX SDK 1.0还在娘胎中),请下载Netbeans IDE 6.1 with JavaFX: http://javafx.com/htdocs/downloadpage.html
而开发JavaFX,则需要写JavaFX Script,这是一种新的脚本语言,旨在方便高效地创建图形界面及绑定数据,而这个所谓的图形界面,最终调到的是swing,但需要注意:
1.JavaFX能提供Swing所没有的一些Widgets
2.对Swing组件的的操作,使用JavaFX Script可能有所限制,也即是说,Swing里面对图形界面元素控制的一些方法或属性,在Java FX里面可能不存在。
下面是用JavaFX开发的一个Clock,其实Swing也完全可以做到:
JavaFX Script看上去:
package myclockproject;
import javafx.application.Frame;
import javafx.application.Stage;
import javafx.scene.CustomNode;
import javafx.scene.Group;
import javafx.scene.Node;
import javafx.scene.geometry.Circle;
import javafx.scene.paint.Color;
import javafx.scene.geometry.*;
import javafx.scene.text.Text;
import javafx.scene.Font;
import javafx.scene.FontStyle;
import javafx.scene.transform.Translate;
import javafx.scene.transform.Rotate;
import javafx.scene.image.ImageView;
import javafx.scene.image.Image;
import java.util.Date;
import java.lang.Math;
import javafx.animation.Timeline;
import javafx.animation.KeyFrame;
import javafx.ext.swing.Button;
Frame {
title : "Java FX Clock Application"
width : 295
height: 325
closeAction : function (){
java.lang.System.exit(0) ;
}
visible: true
stage: Stage {
content: Clock{}
}
}
public class Clock extends CustomNode {
public attribute radius : Number = 77;
public attribute centerX : Number = 144;
public attribute centerY : Number = 144;
public attribute hours:Number;
public attribute minutes:Number;
public attribute seconds:Number;
public function nextTick () {
var now = new Date();
seconds = now.getSeconds();
minutes = now.getMinutes();
hours = now.getHours();
}
public function create(): Node {
return Group {
content:[
ImageView {
image: Image {
url: "{__DIR__}/clock_background.png"
}
},
Group{
transform: Translate { x: centerX, y: centerY }
content: [
// code to display the numbers for every third hour
for (i in [3, 6, 9, 12])
Text {
transform: Translate { x : -5, y : 5 }
font: Font {size: 16 style: FontStyle.BOLD }
x: radius * (( i + 0 ) mod 2 * ( 2 - i / 3))
y: radius * (( i + 1 ) mod 2 * ( 3 - i / 3))
content: "{i}"
},
//code to display a circle for the rest of the hours on the clock
for (i in [1..12])
if (i mod 3 != 0 ) then Circle {
transform:Rotate { angle: 30 * i }
centerX: radius
radius: 3
fill: Color.BLACK
} else [ ],
Circle {
radius: 5
fill: Color.DARKRED
},
//code for the smaller center circle
Circle {
radius: 3
fill: Color.DARKRED
},
//code for the seconds hand
Line {
transform: Rotate { angle: bind seconds * 6 }
endY: -radius - 3
strokeWidth: 2
stroke: Color.RED
},
//code for the hour hand
Path {
//for the hour hands
transform: Rotate { angle: bind (hours + minutes / 60) * 30 - 90 }
fill: Color.BLACK
elements: [
MoveTo {x: 4, y: 4},
ArcTo {x: 4 y: -4 radiusX: 1 radiusY: 1},
LineTo{ x: radius - 15 y: 0},
]
},
// code for the minutes hand
Path {
//for the minutes hand
transform: Rotate { angle: bind minutes * 6 - 90 }
fill: Color.BLACK
elements: [
MoveTo {x: 4, y: 4},
ArcTo {x: 4 y: -4 radiusX: 1 radiusY: 1},
LineTo{ x: radius y: 0},
]
}]}
]
};
}
init {
var timeline = Timeline {
repeatCount: Timeline.INDEFINITE
keyFrames : [
KeyFrame {
time : 1s
action: function() {
nextTick();
}
}
]
}
timeline.start();
}
}
JavaFX Script还是比较简单的。它与Java的差距,比JavaScript与Java的差距,个人感觉小的多。
如何发布JavaFX应用呢?JavaFX内容可以通过Java Web Start发布为应用程序(这将最终运行在用户的Desktop上面),或者发布为Applets作为Java的Plug-In;无论哪种方式,都需要有一个JavaFX runtime.
参考:
Sun:
http://www.sun.com/software/javafx/index.jsp
Sun为Java FX专题建立的网站,网站本身也是Java FX技术的一个演示。
http://javafx.com/
InfoQ:
http://www.infoq.com/news/2008/01/javafx-chet-haase
JavaFX Script:
http://www.sun.com/software/javafx/script/index.jsp
Clock工程src下载(程序和资源来源于Sun):
- src.zip (74.6 KB)
- 描述: Clock工程src
- 下载次数: 189
分享到:
相关推荐
10. **基础的GUI编程**:Java Swing或JavaFX库提供了创建图形用户界面的工具,如按钮、文本框、面板等组件,以及事件处理机制,初步了解如何构建桌面应用程序。 以上只是“北大青鸟初识Java”课程的部分关键知识点...
【初识Java】 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(后被Oracle公司收购)于1995年发布。它的设计目标是具备“简单性、面向对象、健壮性、安全性、可移植性、高效性、多线程和动态性”等...
本书的第二章“初识Android程序”主要涵盖了以下几个关键知识点: 1. **JDK的下载、安装与配置**:JDK(Java Development Kit)是编写Java应用程序的基础,包括了Java编译器、Java运行环境和各种开发工具。在这一...
4. III-22.mp3:可能讲解了GUI编程,如Swing或JavaFX,或者探讨了Java的模块化系统(Java 9及以后版本)。 5. III-24.mp3:这节课可能涵盖了Java的单元测试、持续集成,或者介绍了Java的并发编程工具,如...
Java应用程序设计与开发是计算机科学领域的一个重要主题,它涵盖了从初识Java语言到构建复杂系统的一系列技术。Java以其“一次编写,到处运行”的特性,成为跨平台应用开发的首选语言之一。以下是对Java应用程序设计...
适合入门并准备精通的同志,意味着这份资料能够陪伴学员从初识Java到掌握其精髓,进阶成为熟练开发者。 【标签】"java"明确指出这是一份关于Java编程语言的资料,Java是一种广泛应用的面向对象的编程语言,具有跨...
通过这些详细讲解和实例分析,"实用Java自学课件"将帮助你逐步提升Java编程技能,从初识Java到能够独立进行项目开发,踏上Java编程的殿堂之旅。无论你是零基础的新手,还是希望深化理解的开发者,这个课件都将是你...
在Java编程中,可以使用Java Swing或JavaFX库来创建GUI,这两者都提供了丰富的组件和布局管理器,便于构建美观且功能丰富的界面。 3. **Java Server Pages(JSP)**: - JSP是Java EE平台的一部分,用于开发动态...
本篇资料将带你初识HTML5的各项内容,包括其历史背景、主要特性以及应用前景。 HTML5的诞生与多个组织密切相关。欧洲核子研究中心(CERN)的蒂姆·伯纳斯-李是HTML的创始人,他同时也是万维网联盟(W3C)的创立者。...
《初识Java编程:飞机大战游戏的实现》 在编程世界中,Java语言以其跨平台性和丰富的类库深受开发者喜爱,尤其对于初学者而言,它提供了友好的学习曲线。本项目“WangsicongAndAltman.rar”便是一个基于Java的基础...
Java开发基础:初识Java Java,一种广泛使用的高级编程语言,由Sun Microsystems(现为Oracle Corporation的一部分)在1995年推出。它的设计目标是具有“一次编写,到处运行”的特性,使得代码能够在各种操作系统上...
1. **初识JAVA**: - ** HelloWorld 示例**:学习Java的第一步通常是编写"Hello, World!"程序,了解基本语法和编译运行流程。 - **JDK和JRE**:理解Java Development Kit (JDK)和Java Runtime Environment (JRE)的...
#### 一、初识Java:安装与环境配置 在开始学习Java之前,最重要的是准备好开发环境。这通常包括安装JDK(Java Development Kit),这是开发Java程序的基础工具包。JDK包含了编译、运行Java程序所需的工具和文档,...
Pong是一款经典的电子游戏,它在计算机历史中占据着特殊的地位,也是许多程序员初识游戏开发的起点。在这个项目中,我们看到开发者使用Java语言重新实现了这款经典游戏。Java是一种广泛应用于各种领域的面向对象的...
1. **初识Java**: 学习Java首先从理解其基础概念开始,包括面向对象编程(OOP)原则,如封装、继承、多态,以及类和对象的概念。学校通常会引导学生从编写简单的"Hello, World!"程序开始,逐步深入到更复杂的编程...