现在的位置: 首页 > 综合 > 正文

JavaFX 1.0入门

2014年11月03日 ⁄ 综合 ⁄ 共 4174字 ⁄ 字号 评论关闭

 

Sun终于在上周四(04-12-2008)发布了我们期盼已久的JavaFX 1.0版本。Sun想借助JavaFX这个强大的开发平台,把Java在服务器端的辉煌扩大到包括浏览器和桌面在内的客户端领域。这样,Sun就可以在竞争激烈的RIA(Rich Internet Applictions)领域中和AdobeFlexMicrosoftSilverlight一较高下。笔者以前针对JavaFx0.0.2版本写过一篇短文(http://blog.csdn.net/carlwu/archive/2008/05/09/2419776.aspx),指出了JavaFX的四点不足之处。但从刚刚发布的JavaFX1.0来看,Sun改进了其中的三个缺点,即在JavaFX开发工具、JavaFX对多媒体影像的支持、JavaFX的网络部署等方面有了很大的进步。所以,我觉得JavaFX1.0现在虽然还稍稍落后于SilverlightFlex,但JavaFX可能会对我们的实际项目有所帮助,尤其对我们广大的Java开发者而言。

SunJavaFX的简单介绍请参见http://www.javafx.com/launch/win-player.jsp Sun提供了几段令人印象深刻的演示。其中,JavaFXPhotoshop的集成对我们开发者来说可能关系不大,JavaFX媒体播放器、JavaFX的拖拽功能及JavaFX3D图片展示可能会另我们耳目一新。Sun直言,JavaFX将对我们Java开发者、Web开发者及图像设计者会有所裨益。我也衷心希望Sun借助JavaFX平台在RIA领域能有所作为。

下面我们就开始我们的JavaFX的入门之旅,简单领略一下JavaFX的魅力。

  1. 准备工作

首先,您得从http://www.javafx.com/downloads/windows.jsp下载NetBeans 6.5,同时升级您的JDK到最新版本(我的本机为JDK6u11)

  1. 请打开NetBeans,新建一个项目,项目类型选择JavaFX,然后输入项目名称HelloJavaFX,同时创建主项目文件hellojavafx.Main

  2. NetBeans会创建一个缺省的JavaFX项目,我们打开Main.fx,将下面的源代码覆盖NetBeans自动生成的代码:

  1. /*
  2.  * Main.fx
  3.  *
  4.  * Created on 2008-12-9, 17:05:46
  5.  */
  6. package hellojavafx;
  7. import javafx.animation.Interpolator;
  8. import javafx.animation.KeyFrame;
  9. import javafx.animation.Timeline;
  10. import javafx.scene.effect.DropShadow;
  11. import javafx.scene.paint.Color;
  12. import javafx.scene.paint.RadialGradient;
  13. import javafx.scene.paint.Stop;
  14. import javafx.scene.Scene;
  15. import javafx.scene.shape.Circle;
  16. import javafx.scene.text.Font;
  17. import javafx.scene.text.Text;
  18. import javafx.scene.text.TextAlignment;
  19. import javafx.scene.transform.Scale;
  20. import javafx.stage.Stage;
  21. /**
  22.  * @author carlwu
  23.  */
  24. var scale = 1.0;
  25. var color = Color.YELLOW;
  26. Timeline {
  27.     repeatCount: Timeline.INDEFINITE
  28.     keyFrames: [
  29.         KeyFrame {
  30.             time: 5s
  31.             canSkip: true
  32.             values: [
  33.                 scale => -1.0 tween Interpolator.EASEBOTH
  34.                 color => Color.GREEN
  35.             ] // values
  36.         } // KeyFrame
  37.     ] // keyFrames
  38. }.play();
  39. Stage {
  40.     title: "/u6211/u7684/u7b2c/u4e00/u4e2aJavaFX"
  41.     width: 250
  42.     height: 250
  43.     scene: Scene {
  44.         content: [
  45.             Circle {
  46.                 centerX: 100,
  47.                 centerY: 100
  48.                 radius: 90
  49.                 fill: RadialGradient {
  50.                     centerX: 75
  51.                     centerY: 75
  52.                     radius: 90
  53.                     proportional: false
  54.                     stops: [
  55.                         Stop {
  56.                             offset: 0.0
  57.                             color: Color.BLUE},
  58.                         Stop {
  59.                             offset: 1.0
  60.                             color: Color.YELLOW}
  61.                     ] // stops
  62.                 } // RadialGradient
  63.                 radius: 90
  64.                 fill: Color.RED
  65.             }
  66.             Text {
  67.                 font: Font {
  68.                     size: 24
  69.                 }
  70.                 x: 20,
  71.                 y: 90
  72.                 textAlignment: TextAlignment.CENTER
  73.                 content:"/u6b22/u8fce/u8fdb/u5165 /nJavaFX /u7684/u4e16/u754c"
  74.                 fill: bind color
  75.                 effect: DropShadow {
  76.                     offsetX: 10
  77.                     offsetY:10
  78.                     color: Color.color(0.10.30.1)
  79.                 };  // DropShadow
  80.                 transforms: Scale{
  81.                     x: 1
  82.                     y: bind scale
  83.                     pivotX: 100,
  84.                     pivotY: 100
  85.                 } // Scale
  86.             } // Text
  87.         ]
  88.     }
  89. }

然后,右击Main.fx文件,先编译然后运行该文件,运行效果如下:

 

 

您会看到窗口上的两行字的动画效果。上面的代码非常简单,其中,Timeline类似于Flash中的时间线的概念,随着时间线的推移,关键帧发生变化,所以产生动画效果。另外,Stage就相当于以前Swing中的Window,是最顶级的容器;Stage中包含了次级的容器Scene 的实例scene,这相当于以前的Graphics画布对象,scene对象中又包含了一个Circle对象和Text对象,代码的结构还是相当清楚的。JavaFX是一种声明式的脚本语言,但它不是动态语言。关于JavaFX脚本语言的细节及API,请参考SunJavaFX教程http://java.sun.com/javafx/1/tutorials/core/,在此我就不多说了。

4. 关于JavaFX的部署

JavaFX模糊了桌面应用和网络应用的概念,就上面的简单示例来说,请在资源管理器中打开该项目所在的目录,您会发现该目录下有一个dist的子目录,子目录中包含了一个HelloJavaFX.jnlpJava Web Start的启动文件,如果您双击该文件,它就会启动Java Web Start,您此时的应用就是一个桌面应用程序;另外,dist子目录下还有一个HelloJavaFX.html文件,如果您在浏览器中打开这个文件,您应看到如下图所示的效果:

 

 

 5. JavaFX小结

通过上面简单的示例,我们可以看到,JavaFXSun公司下一代RIA技术的代表,它在多媒体的支持、IDE集成、拖拽功能、对移动开发的支持及和其它技术的集成上面,都有可圈可点之处。如果您对RIA开发有兴趣,不妨抽时间可以学习一下JavaFX。另外,我觉得Sun还可以在IDE上多下工夫,真正做到“所见即所得”的效果,虽然现在JavaFX有预览的功能。另外,EclipseJavaFX1.0插件也不知何时能推出?

 

 

抱歉!评论已关闭.