• JavaFX入门(一):我的第一个JavaFX程序


    JavaFX简介
    JavaFX是一个强大的图形和多媒体处理工具包集合,它允许开发者来设计、创建、测试、调试和部署富客户端程序,并且和Java一样跨平台。

    JavaFX发展历史
    2008年12月05日 Sun微系统公司今天正式发布了基于Java语言的平台JavaFX 1.0。因为当时富互联网应用(RIA,Rich Internet Application)正火,具有代表性的有:Adobe公司的Flex,微软的Silverlight和Oracle的JavaFX,还有HTML5+CSS3+JavaScript组合。感觉当时Oracle推出JavaFX主要是为了和Adobe的Flex和微软的Silverlight竞争。当然,随着HTML5的盛行,在RIA开发上这三者都慢慢地退出了历史舞台。HTML+CSS+JS有了一统天下的趋势。所以后来,Flex捐赠给了Apache,成为旗下的一个开源项目,Silverlight停止了更新。其实,个人挺喜欢Silverlight技术的。JavaFX 1.0的时候开发者需使用一种名为JavaFX Script的静态的、声明式的编程语言来开发JavaFX应用程序。因为JavaFX Script将会被编译为Java字节码,程序员可以使用Java代码代替。
    JavaFX不用于开发RIA了,但是JavaFX还可以用来开发桌面程序以及移动设备上的程序。但是貌似开发移动应用,各个平台都有自己的SDK,比如开发Android和ISO应用都会使用原生地API,应该很少有人会使用像JavaFX或者QT这种第三方的技术吧(个人见解)!所以,JavaFX剩下的能使用的地方就是桌面应用程序了!JavaFX 2.0之后的版本摒弃了JavaFX Script语言,而作为一个Java API来使用。因此使用JavaFX平台实现的应用程序将直接通过标准Java代码来实现。而且从JDK 7u6 开始,JavaFX被内置到Java SE中,原来如果要开发JavaFX程序,需要单独下载JavaFX的SDK,但是现在不需要了。
    从Java8开始,JavaFX的版本也更新为JavaFX8。现在的JavaFX主要由原来Java Swing工作组进行维护,由于JavaFX的种种优点,在Java桌面开发方面JavaFX会慢慢取代原来的Java Swing。我觉得现在的JavaFX和微软的WPF比较像,JavaFX现在的竞争对手应该是用于桌面开发WPF。WPF是一门很赞的技术,自定义控件可以将程序打造得很惊艳。Windows7中的Windows Media Center就是使用WPF技术开发的。而且WPF已经推出多年,较JavaFX更加成熟。但是JavaFX有跨平台的优势!
    不过话说回来,以后桌面开发肯定会越来越少,更多的是移动App开发和Web程序开发。但是,在可预见的未来,桌面开发肯定不会消亡。

    JavaFX特点
    官方对于JavaFX的解释如下:
    JavaFX Overview
    JAVAFX概览
    我个人主要觉得有一下几点:
    1. JavaFX是一个Java库,包括用Java写成的类和接口。所以使用JavaFX写的程序可以跨平台运行。而且现在大量成熟的Java库都可以为JavaFX所使用。
    2. 内置大量UI控件和CSS支持。层级样式表(CSS)将外观和样式与业务逻辑实现进行了分离。图形设计师可以使用FXML语言(一种XML语言)来表述图形界面,使用CSS来定制程序的外观和样式。程序员可以使用Java代码来表述业务逻辑。
    3. 内置Canvas API以及特效,动画等可以让你制作出类似Flash的程序。
    3. 本身提供对三维图形的支持,而且支持硬件加速。
    4. 还有就是类似WPF的属性绑定。
    5. 此外,JavaFX中还可以放置Java Swing组件,支持WebView即使用HTML编写的页面。
    当然还有很多,这里我只说了我了解到的一些特性。具体可参看上面给出的官方链接中的描述。

    JavaFX架构
    这是Oracle官方对JavaFX框架架构的一个描述,大概了解下,看不懂关系不大。参考文献:Understanding the JavaFX Architecture

    JavaFX版HelloWorld
    HelloWorld程序
    下面以一个简单的程序说明怎么开发JavaFX程序。因为Java8内置了JavaFX,所以你如果安装的是JDK8,不需要额外的配置,就可以直接开发JavaFX程序。
    我们打开Eclipse,新建一个Java Project。对,就是一个普通的Java工程。然后新建一个类,该类需要继承javafx.application.Application类。然后编写代码。下面的程序实现这样一个功能:点击Button的时候,改变Button的内容。

    package cn.tzy.javafx.hello;
    
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.layout.BorderPane;
    import javafx.stage.Stage;
    
    public class HelloApplication extends Application {
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            /**
             * 首先我们创建一个Button,当我们点击Button的时候,改变Button的内容。
             */
    
            Button btnHello = new Button("Hello");
            /**
             * 设置btnHello按钮点击事件
             * 这里使用了Java8的Lambda表达式。setOnAction的参数为EventHandler<ActionEvent> value
             * EventHandler为一个接口,所以我们有三种方式实现EventHandler接口:
             * 1. 创建一个内部类
             * 2. 创建一个匿名类
             * 3. 使用Lambda表达式(适用于函数体不大的情况)
             */
            btnHello.setOnAction(event->{
                btnHello.setText("Hello World, I am JavaFX!");
            });
    
            /**
             *  BorderPane是一个用于布局的Pane,BoerderPane将面板分割为上下左右中五部分。
             *  我们可以将UI控件放置在BorderPane的上下左右和中间。
             *  这里将将Button放置在中间。
             */
            BorderPane pane = new BorderPane();
            pane.setCenter(btnHello);
    
            // 将pane加入到Scen中
            Scene scene = new Scene(pane, 500, 500);
    
            // 设置stage的scen,然后显示我们的stage
            primaryStage.setScene(scene);
            primaryStage.setTitle("Hello World");
            primaryStage.show();
    
        }
    
        public static void main(String[] args) {
            // JavaFX中main函数必须需要调用launch函数
            launch(args);
        }
    
    }

    运行结果如下:

    HelloWorld程序说明
    所有的JavaFX主程序都需要继承Application类。
    继承了Application类的子类必须重写start方法。start方法中可以进行UI控件的布局。当JavaFX程序启动的时候,会自动调用start方法。
    mian函数中必须调用launch方法,该方法会启动JavaFX程序。
    JavaFX程序用户界面的顶层是stage,代表窗体。stage中是scene,scene中可以包含各种UI控件和布局控件,共同组成用户UI。
    当然,这只是一个入门的JavaFX程序,还看不出JavaFX技术的优点。
    这一节我们用纯Java代码写了一个很简单的JavaFXML程序,下一节:JavaFX入门(二):JavaFX和FXML 中我们使用FXML编写程序界面,然后用Java书写后台逻辑实现这一节中相同的功能。

  • 相关阅读:
    C#后台利用正则表达式查找匹配字符
    C# Dictionary 的几种遍历方法
    eval解析JSON中的注意点
    jquery datatables api (转)
    Replication--镜像+复制
    Replication--分区+复制
    Replication--进程无法在“xxxx”上执行“sp_replcmds”
    Replication--无法将事务提升为分布式事务,因为在事务中有活动的保存点
    Replication--使用MSlogreader_history查看日志读起的延迟和事务命令
    Partition--分区拆分和分区合并
  • 原文地址:https://www.cnblogs.com/jijm123/p/15642402.html
Copyright © 2020-2023  润新知