07
2013
08

JavaFX简介与使用入门

JavaFX是Sun于2007年推出的富互联网应用开发技术(RIA)。所谓RIA,就是页面体验和数据交互都基于web,提供跨平台,拥有丰富的体验,且易于部署的应用程序。了解更多RIA可以参照维基百科上的内容。

1_book_swiss_armyknife

RIA普遍被认是未来互联网应用发展趋势的热门技术,比如Air、Flex、Silverlight、Google GWT甚至HTML5等。JavaFX诞生之初,adobe借助flash普及,谷歌、微软借助系统和浏览器,优势都很明显,相比之下JavaFX形势不乐观也受到较少的关注。2007年Sun发布JavaFX1.0的时候以JavaScript作为语言,具有一定的学习成本,使用起来也并不方便。后来Oracle发布JavaFX 2.0,增加了很多新特性,并明智地抛弃js选择Java作为开发语言。这样一来,广大开发者可以毫无困难地使用JavaFX,并吸收Java大量的现有框架。JavaFX 2.0使用起来有点像简洁版的Swing,但其强大的地方在于可以使用FXML定义应用的布局实现逻辑与界面分离,有点类似Android的布局系统,这也是经典的MVC理念,官方还提供完善的布局设计工具,体验要优于任何Swing插件。此外,JavaFX 2.0还可以开发3D应用、媒体应用等,支持GPU渲染,更厉害的是像页面一样支持CSS,可以轻松实现自定义的界面风格。到目前为止,JavaFX支持windows、mac、linux平台,ARM版的也在准备中,事实上已经可以通过RoboVM在IOS上运行JavaFX了,有迹象表明官方也将对移动平台提供支持。由此可见选择JavaFX的有着众多优点,虽然HTML5在崛起,而JavaFX也有依赖较新版本JRE的软肋,但凭借Oracle的推广和近乎无限的Java资源,JavaFX必将在未来RIA第一阵营中占有一席之地。

使用JavaFX需要JDK1.7,也可以单独下载JavaFX的SDK,详情参考官方主页。IDE支持Netbeans、Eclipse、IntelliJ等,用我们常用的Eclipse开发需要安装插件,这里推荐e(fx)clipse,该插件在线安装地址为:http://downloads.efxclipse.org/p2-repos/releases/latest/

安装好插件以后,通过Eclipse菜单-File-New-Other,选择新建JavaFX项目,如图:

1


工程创建好以后右击-New-Other,选择添加JavaFX主类:

2

这里引用官方的例子,键入如下代码完成:

import javafx.application.Application;

import javafx.event.ActionEvent;

import javafx.event.EventHandler;

import javafx.scene.Scene;

import javafx.scene.control.Button;

import javafx.scene.layout.StackPane;

import javafx.stage.Stage;


public class JavaFxTestMain extends Application

{

    public static void main(String[] args)

    {

        launch(args);

    }

    

    @Override

    public void start(Stage primaryStage)

    {

        primaryStage.setTitle("Hello World!");

        Button btn = new Button();

        btn.setText("Say 'Hello World'");

        btn.setOnAction(new EventHandler<ActionEvent>()

        {

            

            @Override

            public void handle(ActionEvent event)

            {

                System.out.println("Hello World!");

            }

        });

        

        StackPane root = new StackPane();

        root.getChildren().add(btn);

        primaryStage.setScene(new Scene(root, 300, 250));

        primaryStage.show();

    }

}


右击工程,run as javaApplication,效果如下:

helloworld

代码中需要说明的是,JavaFX的应用程序入口类必须继承Application,main方法里必须是launch(args),

而void start(Stage primaryStage)即为JavaFX的入口,通常在这里设置窗口、布局等。关于State、Scene、Panel、Node之间的层次关系可以参考下面这张来自官方的图片,其具体的关系与用法,后面的文章再逐步介绍。

helloworld_scenegraph

关于应用部署,JavaFX支持多个平台,主要发布方式有jar、jnlp、html,甚至可以打包成exe,dmg。jnlp优点是发布文件较小,可以自动下载最新版本,检测运行环境等。要部署JavaFX,打开工程目录下的build.xml进行相关设置,点击build按钮进行部署,如图:

20130807161253

完成之后会在工程的deploy目录下生成执行文件:

20130807161315


参考资料:

http://docs.oracle.com/javafx/2/get_started/hello_world.htm

http://blog.csdn.net/wingfourever/article/details/7819986

« 上一篇下一篇 »

评论列表:

1.vliu  2013-8-7 16:54:51 回复该留言
聪哥啊,好兴致,研究起这个来了
.LeeStorm  2013-8-7 20:21:35 回复该留言
也不完全是兴致使然,最近在移植以前做的工具,C#做的,移植到JavaFX可以解决跨平台问题,顺便对工具做一些完善。总体来说JavaFX还是挺顺手的。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。