使用Kotlin开发JavaFX的系列文章
Java桌面技术
Java桌面技术是Java语言的一个重要应用领域,它的主要特点是跨平台,即一次编写,到处运行。Java桌面技术主要包括JavaFX和Swing两种技术。
最开始的时候,在Swing之前,Java还有Applet和AWT两种技术,但是这两种技术已经被淘汰(?),所以这里不再介绍。
我以前用Swing还写过一些小程序,并且还有好多比较重要的软件都是Swing来实现的。比如JetBrains的IDEA,居然是用Swing写的。最开始从AWT转向Swing的时候,MFC还如日中天,跟Swing一比,真是弱爆了。但是现在,Swing也已经越来越少新的项目,取而代之的是JavaFX。
JavaFX
JavaFX是Java语言的一个GUI框架,它的特点是使用XML来描述界面,使用CSS来描述界面的样式,使用Java来描述界面的行为。JavaFX的界面描述语言叫做FXML,它是基于XML的,所以它的语法也是基于XML的。JavaFX的样式描述语言叫做CSS,它是基于CSS的,所以它的语法也是基于CSS的。JavaFX的行为描述语言叫做FXML,它是基于Java的,所以它的语法也是基于Java的。
JavaFX的界面描述语言FXML的语法如下:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<AnchorPane xmlns="http://javafx.com/javafx/8.0.65" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<children>
<Button fx:id="button" layoutX="126.0" layoutY="90.0" onAction="#handleButtonAction" text="Click Me!" />
<Label fx:id="label" layoutX="126.0" layoutY="120.0" minHeight="16.0" minWidth="69.0" />
</children>
</AnchorPane>
大概就是这样子的,JavaFX还提供了一个可视化的FXML编辑器Scence builder,可以在Eclipse或者IDEA中安装JavaFX插件之后使用。
用XML之后有一个好处,就是可以把界面风格和界面行为分离开来,这样子就可以专门有一个人负责界面的设计,另外一个人负责界面的行为。这样子说不定可以提高开发效率。
JavaFX的样式描述语言CSS的语法如下:
.button {
-fx-background-color: #f00;
-fx-text-fill: #fff;
}
JavaFX的行为描述语言FXML的语法如下:
public class Controller {
@FXML
private Button button;
@FXML
private Label label;
@FXML
private void handleButtonAction(ActionEvent event) {
label.setText("Hello World!");
}
}
上面三个部分,JavaFX的界面描述语言FXML,样式描述语言CSS,行为描述语言FXML,这三个部分,共同构成了JavaFX的一个界面。
使用Kotlin开发JavaFX程序
当Kotlin语言出现之后,我就想着能不能用Kotlin来开发JavaFX程序,因为Kotlin语言的语法比Java语言的语法要简洁很多,所以用Kotlin来开发JavaFX程序,应该会更加简单一些。
采用Kotlin开发JavaFX程序,我一开始就放弃了FXML,因为我觉得FXML的语法太复杂。都怪以前上硕士的时候用XML做了几篇小论文,彻底败坏了我对XML的胃口。看到XML我就打退堂鼓。所以我采用了纯Kotlin的方式来开发JavaFX程序。
一边学Kotlin一边学JavaFX,顺便也写了若干篇博客,记录了一些学习笔记。
基本上把我觉得有用或者好玩的都写了一遍。
的确,用Kotlin来开发JavaFX还是非常顺滑的。
总结
- JavaFX是Java语言的一个GUI框架,它的特点是使用XML来描述界面,使用CSS来描述界面的样式,使用Java来描述界面的行为。
- 但是JavaFX用Kotlin来写,就不用XML了,也不用CSS了,只用Kotlin就可以了。
- Kotlin的工具使得JavaFX界面的编写变得非常顺滑。