使用eclipse开发javafx,需要安装java8以上版本,下载scene builder 制作FXML文件。
新建package
HelloJava.java是main函数所在类。起到调度作用
Test.java是和study.fxml配合的事件处理的类。
study.fxml是界面文件。使用scene builder制作。
HelloJava.java:
package HelloFX;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
public class HelloJavaFX extends Application {
public static void main(String[] args) {
Application.launch(HelloJavaFX.class, args);
}
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("study.fxml"));
Scene scene = new Scene(root, 600, 400);
stage.initStyle(StageStyle.DECORATED);
stage.setScene(scene);
stage.setTitle("JavaFX测试");
stage.show();
}
}
study.fxml如下:
查看上面的study.xml,你就可以看到根节点有一个fx:controller属性。这个属性就是指定事件处理的类。比如我们现在应用程序中处理事件的类为Test.java。那么就修改fx:controller = "HelloFX.Test" 前面的是包名。
Test.java,处理了2个按钮事件。注意:@FXML 注释必须存在。否则编译出错。
package HelloFX;
import java.io.File;
import javax.swing.JOptionPane;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.layout.AnchorPane;
import javafx.stage.FileChooser;
public class Test {
@FXML
private void onActButton2(ActionEvent event) {
System.exit(0);
}
@FXML
private void onActButton1(ActionEvent event) {
JOptionPane.showMessageDialog(null, "JavaFX记事本是一款使用JavaFX开发的记事本。" ,"关于", JOptionPane.PLAIN_MESSAGE);
}
}
===========================下面列出java的gui开发的4种方法比较================
Java中进行界面GUI开发,总共有四种方式。
- Awt
Awt是最早开发的界面库,为了满足跨平台的需要,达到“一次编写多处运行”的效果。在不同的系统下,使用系统的控件包装成统一的调用接口。但由于每个系统下面的控件不同,甚至,很多是缺失的。所以,效果并不太好。现在基本上没有人使用了。 - Swing
为了解决Awt在不同系统下控件不一样的问题,开发了一套独立运行在Java虚拟机上的控件,这就是Swing。由于它完全独立于操作系统,所以,可以在各个系统下运行,并且基本一致。但是,由于是虚拟出来的控件,因此运行效率上稍微差一些,比较慢。另外,默认的界面比较丑,但是,有Look And Feel,类似css这种,可以通过配置修改显示效果。精通之后,可以做很多的效果出来,但是入门比较困难,开发效率也不高。 - SWT
IBM为了开发Eclipse,开发出来的一套界面库,它基于Awt和Swing之间,效率等各方面,相当于各取了其中的一部分。已经不推荐使用了。 - JavaFx
JavaFx是Java中的最新的界面库,Oracle开发的。有两种编写模式,一种是纯代码编写,一种是代码+FXML。纯代码好理解,代码+FXML是什么呢?如果熟悉html编程的话,就比较好理解了,相当于html+js来编写界面。当然,这两种方法都可以配合css来编写。
http://docs.oracle.com/javase/8/javafx/get-started-tutorial/jfx-overview.htm
Awt | Swing | SWT | JavaFx | |
---|---|---|---|---|
优势 | 1. 运行速度快 | 1. 多平台 | 1. 介于Awt和Swing之间 | 1. 支持控件多 |
2. 稳定 | 2. 默认控件漂亮 | |||
3. 编写接口简洁 | ||||
4. 开发效率高 | ||||
劣势 | 1. 夸平台效果不好 | 1. 运行效率低 | 1. 介于Awt和Swing之间 | 1. 运行效率一般 |
2. 开发效率低 | 2. 开发效率不高 | |||
3. 接口繁琐 | ||||
4. 默认主题界面不美观 | ||||
5. 精通耗时长 |