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代码来表述业务逻辑。jdk怎么使用
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的内容。
javafx.hello;
import javafx.application.Application;
import javafx.scene.Scene;
import l.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书写后台逻辑实现这⼀节中相同的功能。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论