摘要:最近在用開(kāi)發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到上面,并且還想用的各種好處,集成了就可以愉快的用各種服務(wù)了。最重要的是打包工具。由于我是,一般用和,執(zhí)行命令會(huì)看到打包成了和兩種類(lèi)型的安裝包。由于沒(méi)有計(jì)算機(jī),所以還不知道打包成的狀態(tài)。
最近在用 JavaFx 開(kāi)發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到 JavaFx 上面,并且還想用 springboot 的__各種好處,集成了 springboot 就可以愉快的用各種服務(wù)了。所以就有了這個(gè)博客。。。1. 介紹
我本來(lái)想自己寫(xiě)一個(gè) javafx-spring-boot-starter 的,其原理也是很簡(jiǎn)單地,利用 springboot的 aware 就可以了。但是發(fā)現(xiàn)德國(guó)這哥們已經(jīng)寫(xiě)了一個(gè),就變懶了。哎,沒(méi)辦法,我真的是太懶了。
本次的代碼Github 地址:https://github.com/spartajet/...
javafx的springboot支持的庫(kù),官方是沒(méi)有的,開(kāi)源有一大堆。我采用的是springboot-javafx-support 地址是:springboot-javafx-support .這個(gè)庫(kù)文檔比較全,比較詳細(xì),文檔地址:Spring Boot and JavaFx8 .
用springboot必須用maven,否則那簡(jiǎn)直是災(zāi)難。最重要的是打包工具。我用的是JavaFX Maven Plugin 地址:JavaFX Maven Plugin
2. Maven 配置maven 主要配置依賴(lài)庫(kù)和插件,具體如下:
org.springframework.boot spring-boot-starter-actuator ${spring.boot.version} org.springframework.boot spring-boot-starter ${spring.boot.version} org.springframework.boot spring-boot-starter-log4j2 ${spring.boot.version} org.springframework.boot spring-boot-starter-test ${spring.boot.version} test de.roskenet springboot-javafx-support ${springboot-javafx-support.version} org.springframework.boot spring-boot-maven-plugin com.zenjava javafx-maven-plugin com.spartajet.fxboot.demo.MainController Spartajet
其中,比較重要的是:
可以用 SceneBuilder 工具創(chuàng)建 FXML 文件,我還是建議自己寫(xiě) FXML,剛開(kāi)始可能不習(xí)慣,慢慢習(xí)慣就好了。但是,我墻裂建議布局和樣式分開(kāi),fxml 只管布局,css 只管樣式。
3.2 MainStageController
每一個(gè) fxml 布局文件對(duì)應(yīng)一個(gè) controller,要在 fx:controller 里面設(shè)置。
/** * @description * @create 2017-05-20 下午1:55 * @email spartajet.guo@gmail.com */ @FXMLController public class MainStageController implements Initializable { /** * Called to initialize a controller after its root element has been * completely processed. * * @param location The location used to resolve relative paths for the root object, or * null if the location is not known. * @param resources The resources used to localize the root object, or null if */ public void initialize(URL location, ResourceBundle resources) { } }
實(shí)現(xiàn)Initializable接口,加上@FXMLController注解,其實(shí)很簡(jiǎn)單的。看看@FXMLController的源碼:
@Component @Retention(RetentionPolicy.RUNTIME) public @interface FXMLController { }3.3 MainStageView
這個(gè)是比較特殊的,在普通的 javafx 里面沒(méi)有這個(gè)東西,但是按照 MVC 的角度來(lái)講,業(yè)務(wù)和試圖分離,還是很有必要的。
@FXMLView(value = "/view/MainStage.fxml") public class MainStageView extends AbstractFxmlView { }
添加的是注解@FXMLView,源碼如下:
@Component @Retention(RetentionPolicy.RUNTIME) public @interface FXMLView { String value() default ""; String[] css() default {}; String bundle() default ""; }
從這里也能看到,可以在這里注入 css 樣式文件以及 bundle 文件。還是比較方便的,我是在 fxml 里面注入的 css 文件,都是可以的。
其中還繼承了 AbstractFxmlView 的抽象類(lèi),方法比較少,最重要的是getView方法,返回的是Node對(duì)象。然后就可以隨意的用這個(gè)視圖了。
@SpringBootApplication public class MainController extends AbstractJavaFxApplicationSupport { /** * The entry point of application. * * @param args the input arguments */ public static void main(String[] args) { launchApp(MainController.class, MainStageView.class, args); } /** * Start. * * @param stage the stage * * @exception Exception the exception */ @Override public void start(Stage stage) throws Exception { super.start(stage); } }
繼承自AbstractJavaFxApplicationSupport 可以看到源碼,典型的Aware。然后就可以運(yùn)行了。
可以看到
這個(gè)是啟動(dòng)動(dòng)畫(huà)。可以自定義啟動(dòng)動(dòng)畫(huà),個(gè)人認(rèn)為,啟動(dòng)動(dòng)畫(huà)還是很有必要的,因?yàn)?springboot 啟動(dòng)費(fèi)時(shí)還是比較多的,來(lái)個(gè)啟動(dòng)動(dòng)畫(huà),逼格滿滿的。
3.4 啟動(dòng)動(dòng)畫(huà)/** * @description * @create 2017-05-20 下午2:54 * @email spartajet.guo@gmail.com */ public class CustomSplash extends SplashScreen { /** * Use your own splash image instead of the default one * * @return "/splash/javafx.png" */ @Override public String getImagePath() { return super.getImagePath(); } /** * Customize if the splash screen should be visible at all * * @return true by default */ @Override public boolean visible() { return super.visible(); } }
最常用的就是這兩個(gè)方法了,一個(gè)是更換照片,另一個(gè)是是否顯示啟動(dòng)動(dòng)畫(huà)。
4.0 打包JavaFX-Maven-Plugin可以打包 jar、native、webbundle、key-store這些。
由于我是 mac,一般用 jar和 native,執(zhí)行命令mvn jfx:native 會(huì)看到打包成了pkg 和 dmg 兩種類(lèi)型的安裝包。并且都是180M 左右。由于沒(méi)有 windows 計(jì)算機(jī),所以還不知道打包成 exe 的狀態(tài)。這么大的包,主要是因?yàn)?java 的 jdk 問(wèn)題,模塊化以后就好了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/71031.html
匿名類(lèi) 匿名類(lèi)可以使你代碼更簡(jiǎn)潔,它們使你能夠同時(shí)聲明和實(shí)例化一個(gè)類(lèi),它們就像局部類(lèi),除了它們沒(méi)有名稱(chēng),如果你只需要使用局部類(lèi)一次,請(qǐng)使用它們。 聲明匿名類(lèi) 雖然局部類(lèi)是類(lèi)聲明,但匿名類(lèi)是表達(dá)式,這意味著你在另一個(gè)表達(dá)式中定義該類(lèi),以下示例HelloWorldAnonymousClasses在局部變量frenchGreeting和spanishGreeting的初始化語(yǔ)句中使用匿名類(lèi),但使用局部類(lèi)...
摘要:故可采用自定義控件的方式簡(jiǎn)化外部的代碼調(diào)用。自定義控件的設(shè)計(jì)版本之后,提供寫(xiě)法,此時(shí)要求必須繼承自節(jié)點(diǎn)對(duì)象,使用加載時(shí),必須調(diào)用方法。 「博客搬家」 原地址: 簡(jiǎn)書(shū) 原發(fā)表時(shí)間: 2017-05-21 有一個(gè)項(xiàng)目,需要模擬數(shù)千臺(tái)設(shè)備的工作情況,這數(shù)千個(gè)設(shè)備分為若干組,每組 100 臺(tái)。故需要設(shè)計(jì)一款 GUI 程序,包含 100 個(gè)自定義控件,模擬一組設(shè)備的工作情況,通過(guò) List...
摘要:本文探討使用構(gòu)建集成的可執(zhí)行程序的方法,以及根節(jié)點(diǎn)問(wèn)題。而使用后,可指導(dǎo)類(lèi)作為根節(jié)點(diǎn),避免了嵌套的情況。文件設(shè)計(jì)如下文件同時(shí)指明了根節(jié)點(diǎn)的類(lèi)型,資源文件對(duì)應(yīng)的設(shè)計(jì)如下此時(shí)可實(shí)現(xiàn)開(kāi)始時(shí),純代碼方式的自定義控件設(shè)計(jì)。 「博客搬家」 原地址: 簡(jiǎn)書(shū) 原發(fā)表時(shí)間: 2017-05-22 上一篇文章探討了使用 IntelliJ IDEA 創(chuàng)建 JavaFX 工程,進(jìn)而開(kāi)發(fā)了所需應(yīng)用程序。更...
摘要:創(chuàng)建窗口添加類(lèi)為元素間空隙與主窗口創(chuàng)建過(guò)程相同,新建布局及控件,最后使用的方法顯示出來(lái)。設(shè)置主窗口中的按鈕事件,點(diǎn)擊按鈕后會(huì)顯示一個(gè)窗口。這時(shí)我們可以通過(guò)函數(shù)設(shè)置窗口關(guān)閉時(shí)觸發(fā)的事件在關(guān)閉窗口時(shí),首先執(zhí)行這一事件處理函數(shù),再將窗口關(guān)閉。 前言 如今比較流行的桌面gui框架有WPF、WinForm、Qt、javafx等。其中WPF和WinForm目前還只能在運(yùn)行Winsows上。Qt(w...
Java? 教程 Java教程是為JDK 8編寫(xiě)的,本頁(yè)面中描述的示例和實(shí)踐沒(méi)有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語(yǔ)言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個(gè)完整的工作示例和數(shù)十個(gè)課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識(shí)的路徑 這些教程以書(shū)籍的形式提供,如Java教程,第六版,前往Amazon.com購(gòu)買(mǎi)。 入門(mén) 介紹Java技術(shù)和安裝Java開(kāi)發(fā)軟件并使用...
閱讀 3492·2021-11-12 10:36
閱讀 2869·2021-09-22 15:35
閱讀 2819·2021-09-04 16:41
閱讀 1170·2019-08-30 15:55
閱讀 3581·2019-08-29 18:43
閱讀 2078·2019-08-23 18:24
閱讀 1423·2019-08-23 18:10
閱讀 1924·2019-08-23 11:31