Eclipse开发JavaFX GUI程序
下载安装
Eclipse中添加新插件:
Name: e(fx)clipse
Location: http://mirrors.ustc.edu.cn/eclipse/efxclipse/updates-released/2.4.0/site/
下载JavaFX Scene Builder 2.0
URL:http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-1x-archive-2199384.html
启动eclipse:Window -> References->JavaFX
选择 JavaFX Scene Builder 2.0.exe
创建 JAVAFX项目
1.创建项目
选择javafx项目
File -> New ->Other ->JavaFX
输入javafx名称,(环境:JDK8以上)
项目文件如下:
1.新建fxml文件,程序界面控件文件。
2.Main.java, 程序入口文件。
3.Controller,界面控件控制器文件。
4.application.css,界面美化文件。
JavaFX Scene Builder
1.选择fxml文件,右键选择JavaFX Scene Builder打开
2.JavaFX Scene Builder界面操作请自行查阅
添加控件时,ID为控件变量, 控件控制器动作ID为控件变量下方,后续控制器文件中会用到。
3.界面预览
4.控制器文件代码
复制@FXML下方的代码,粘贴到项目中的Controller文件中
程序展示
代码`
Main.java
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import java.net.URL;
import javafx.fxml.JavaFXBuilderFactory;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
URL location = getClass().getResource("IdCard.fxml");
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(location);
fxmlLoader.setBuilderFactory(new JavaFXBuilderFactory());
Parent root = fxmlLoader.load();
//如果使用 Parent root = FXMLLoader.load(...) 静态读取方法,无法获取到Controller的实例对象
primaryStage.setTitle("身份证号码生成器");
primaryStage.getIcons().add( new Image("file:E:/eclipse-workspace/IdCardNo/src/application/害怕.jpg"));
Scene scene = new Scene(root);
//primaryStage.initStyle(StageStyle.DECORATED);//窗口风格
primaryStage.setResizable(false);//锁定窗口大小
//加载css样式
//scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
Controller controller = fxmlLoader.getController(); //获取Controller的实例对象
//Controller中写的初始化方法
controller.Init();
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Controller.java
package application;
import java.time.LocalDate;
import java.util.*;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.event.ActionEvent;
import javafx.collections.ObservableList;
import javafx.scene.control.*;
import javafx.scene.layout.AnchorPane;
public class Controller {
@FXML
private Button read_Button_id;
//新建省级表
List<String> provinceList = Arrays.asList("北京市","天津市","河北省","山西省","内蒙古自治区","辽宁省","吉林省","黑龙江省","上海市","江苏省","浙江省","安徽省","福建省","江西省",
"山东省","河南省","湖北省","湖南省","广东省","广西壮族自治区","海南省","重庆市","四川省","贵州省","云南省","西藏自治区","陕西省"