SpringBoot整合JavaFx
點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號”
優(yōu)質(zhì)文章,第一時間送達(dá)
? 作者?|? 塵世間迷茫的小書童
來源 |? urlify.cn/j2mUF3
76套java從入門到精通實(shí)戰(zhàn)課程分享
有興趣使用SpringBoot開發(fā)JavaFx應(yīng)用的朋友可以看一下這個隨筆;
SpringBoot版本:2.1.15.RELEASE
JavaFx依賴:
????????????de.roskenet
????????????springboot-javafx-support
????????????2.1.6
????????
????????
????????????de.roskenet
????????????springboot-javafx-test
????????????1.3.0
????????????test
????????
?
SpringBoot啟動類需要稍加改造:
import?com.maxinhai.diary.view.IndexFxmlView;
import?com.maxinhai.diary.view.StartUpPage;
import?de.felixroske.jfxsupport.AbstractJavaFxApplicationSupport;
import?org.springframework.boot.SpringApplication;
import?org.springframework.boot.autoconfigure.SpringBootApplication;
/**
?*?Mood?Diary應(yīng)用啟動入口
?*/
@SpringBootApplication
public?class?DiaryApplication?extends?AbstractJavaFxApplicationSupport?{
????public?static?void?main(String[]?args)?{
????????//?原SpringBoot啟動方法
????????//SpringApplication.run(DiaryApplication.class,?args);
????????launch(DiaryApplication.class,?IndexFxmlView.class,?new?StartUpPage(),?args);
????}
}
上面是加了啟動動畫的啟動方法
?
fxml文件存放到resources文件加下即可:

?
fxml文件:
"1.0"?encoding="UTF-8"?>
"400.0"?prefWidth="600.0"?xmlns="http://javafx.com/javafx/8.0.172-ea"
????????????xmlns:fx="http://javafx.com/fxml/1"
????????????stylesheets="@/css/index.css"
????????????fx:controller="com.maxinhai.diary.controller.IndexController">
????
????????source="menuBar.fxml"/>
????????
????????"20.0"?layoutY="100.0">
????????????
????????????????
????????????????????
????????????????????????
????????????????????????
????????????????
????????????????"hBox1"?>
????????????????????
????????????????????????
????????????????????????"22.0"?prefWidth="40.0"?/>
????????????????????????
????????????????????????"22.0"?prefWidth="40.0"?/>
????????????????????????
????????????????????
????????????????
????????????????"hBox2"?>
????????????????????
????????????????????????
????????????????????????"22.0"?prefWidth="40.0"?/>
????????????????????????
????????????????????????"22.0"?prefWidth="40.0"?/>
????????????????????????
????????????????????
????????????????
????????????
????????
????
?FxmlView 界面試圖類創(chuàng)建:
import?de.felixroske.jfxsupport.AbstractFxmlView;
import?de.felixroske.jfxsupport.FXMLView;
@FXMLView(value?=?"/fxml/index.fxml",title?=?"index",bundle?=?"i18n.index",encoding?=?"utf-8")
public?class?IndexFxmlView?extends?AbstractFxmlView?{
}
FxmlController 界面操作方法淚創(chuàng)建:
import?com.maxinhai.diary.DiaryApplication;
import?com.maxinhai.diary.view.*;
import?de.felixroske.jfxsupport.FXMLController;
import?javafx.event.ActionEvent;
import?javafx.fxml.FXML;
import?javafx.fxml.Initializable;
import?javafx.scene.control.Button;
import?javafx.scene.control.Label;
import?java.net.URL;
import?java.util.ResourceBundle;
/**
?*?首頁控制器
?*/
@FXMLController
public?class?IndexController?implements?Initializable?{
????@FXML
????private?Button?btn;
????@FXML
????private?Button?btnLogin;
????@FXML
????private?Button?listView;
????@FXML
????private?Label?label;
????private?ResourceBundle?resourceBundle;
????@Override
????public?void?initialize(URL?location,?ResourceBundle?resources)?{
????????resourceBundle?=?resources;
????}
????@FXML
????public?void?btnClick(ActionEvent?actionEvent)?{
????????label.setText("helloWorld");
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToPage(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(ImageFxmlView.class);
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToListViewPage(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(ListViewFxmlView.class);
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToTableViewPage(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(TableViewFxmlView.class);
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToMenuBar(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(MenuBarFxmlView.class);
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToDiaryList(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(DiaryListFxmlView.class);
????}
????/**
?????*?跳轉(zhuǎn)場景
?????*?@param?actionEvent
?????*/
????@FXML
????public?void?btnToCalculator(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(CalculatorFxmlView.class);
????}
????@FXML
????public?void?btnToShowTime(ActionEvent?actionEvent)?{
????????DiaryApplication.showView(ShowTimeFxmlView.class);
????}
}
StartUpPage啟動動畫類:
import?com.maxinhai.diary.config.Constant;
import?de.felixroske.jfxsupport.SplashScreen;
import?javafx.scene.Parent;
import?javafx.scene.control.ProgressBar;
import?javafx.scene.image.ImageView;
import?javafx.scene.layout.VBox;
/**
?*?應(yīng)用啟動頁
?*/
public?class?StartUpPage?extends?SplashScreen?{
????@Override
????public?Parent?getParent()?{
????????final?ImageView?imageView?=?new?ImageView(getClass().getResource(getImagePath()).toExternalForm());
????????final?ProgressBar?splashProgressBar?=?new?ProgressBar();
????????splashProgressBar.setPrefWidth(imageView.getImage().getWidth());
????????final?VBox?vbox?=?new?VBox();
????????vbox.getChildren().addAll(imageView,?splashProgressBar);
????????return?vbox;
????}
????/**
?????*?是否顯示:?true顯示
?????*?@return
?????*/
????@Override
????public?boolean?visible()?{
????????return?true;
????}
????/***
?????*?啟動頁圖片
?????*?@return
?????*/
????@Override
????public?String?getImagePath()?{
????????//?圖片路徑
????????return?Constant.START_UP_IMAGE_URL;
????}
}
?
?application.properties
server.port=10010畢竟是SpringBoot項(xiàng)目啟動端口還是要配置的
?
要是嫌棄上面fxml、controller里的代碼太多,可以刪除里面的大多數(shù)節(jié)點(diǎn),簡單跑起來
粉絲福利:Java從入門到入土學(xué)習(xí)路線圖
??????

??長按上方微信二維碼?2 秒
感謝點(diǎn)贊支持下哈?
評論
圖片
表情
