成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

「譯」Maven 集成 JavaFX 8 以及 <fx:root> 問題探討

joywek / 660人閱讀

摘要:本文探討使用構(gòu)建集成的可執(zhí)行程序的方法,以及根節(jié)點問題。而使用后,可指導(dǎo)類作為根節(jié)點,避免了嵌套的情況。文件設(shè)計如下文件同時指明了根節(jié)點的類型,資源文件對應(yīng)的設(shè)計如下此時可實現(xiàn)開始時,純代碼方式的自定義控件設(shè)計。

「博客搬家」  原地址: 簡書  原發(fā)表時間: 2017-05-22

上一篇文章探討了使用 IntelliJ IDEA 創(chuàng)建 JavaFX 工程,進(jìn)而開發(fā)了所需應(yīng)用程序。更實際的情況是需要使用 Maven, Gradle 等進(jìn)行項目的構(gòu)建。本文探討使用 Maven 構(gòu)建集成 JavaFX 8 的可執(zhí)行程序的方法,以及 根節(jié)點問題。

1. Maven 構(gòu)建的程序未集成 FXML 布局文件

使用 Maven 直接構(gòu)建,在 compile 階段, .class 文件均被復(fù)制到 target/classes/ 目錄,而對于 .FXML 文件,則分如下情況:

simple.fxml 文件位于 src/main/resources/ 目錄中,在 compile 階段,simple.fxml 會按照層級復(fù)制到 target/classes/ 目錄中,執(zhí)行:

getClass().getClassLoader().getResource("simple.fxml")
getClass().getResource("/simple.fxml")

為了方便使用,simple.fxml 文件位于其 Controller 的同級目錄中,此時在 compile 階段,simple.fxml 會被忽略掉,Maven 不會復(fù)制位于 src 目錄下的任何資源文件,故需要采取其他策略,通過搜索 StackOverflow 發(fā)現(xiàn)了解決方法如下:

pom.xml 文件中添加如下 resource  插件即可解決問題:

    ...
    
        
            false
            src/main/java
            
                **/*.fxml
                         
        
    
    ...

此時所有的 .fxml 文件均會被完整復(fù)制到 src 下的同級目錄。

使用 Maven 構(gòu)建可執(zhí)行 Jar 可使用通用方法,具體參考:鏡像1、鏡像2

可執(zhí)行 Jar 構(gòu)建完畢后,在 Windows 平臺下可以直接雙擊執(zhí)行。

2. FXML 文件中,「fx:root」根節(jié)點問題探討

為了更加方便靈活地使用自定義控件,更方便的集成 Controller 和 FXML 資源文件,以下內(nèi)容對 StackOverflow 的一則回復(fù)進(jìn)行翻譯修改:

假設(shè)想要設(shè)計一個自定義控件:HBox 中包含 TextFieldButton,不使用 FXML 文件時,自定義控件設(shè)計如下:

public class MyComponent extends HBox {
    private TextField textField ;
    private Button button ;

    public MyComponent() {
        textField = new TextField();
        button = new Button();
        this.getChildren().addAll(textField, button);
    }
}

此時可對該自定義控件方便地設(shè)計邏輯代碼。

若使用 FXML 文件時,如:


    
    

此時 HBox 的 Controller 定義如下:

public class MyComponent extends HBox {

    @FXML
    private TextField textField ;

    @FXML
    private Button button ;

    public MyComponent() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("MyComponent.fxml"));
            loader.setController(this);
            HBox hbox = loader.load();
            this.getChildren().add(hbox);
        } catch (IOException exc) {
            // handle exception
        }
    }
}

此時該自定義控件為一個 HBox 包裹一個 HBox,子 HBox 才包含 TextFieldButton,所以無法實現(xiàn)開始時,純代碼方式的自定義控件設(shè)計。

而使用 后,可指導(dǎo) Controller 類作為「根節(jié)點」,避免了 HBox 嵌套 HBox 的情況。

FXML 文件設(shè)計如下:


    
    

FXML 文件同時指明了根節(jié)點的類型,資源文件對應(yīng)的 Controller 設(shè)計如下:

public class MyComponent extends HBox {

    @FXML 
    private TextField textField ;

    @FXML
    private Button button ;

    public MyComponent() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("MyComponent.fxml"));
            loader.setController(this);
            loader.setRoot(this);
            loader.load();
        } catch (IOException exc) {
            // handle exception
        }
    }
}

此時可實現(xiàn)開始時,純代碼方式的自定義控件設(shè)計。

3. 參考資料

JavaFX and Maven: NullPointerException: Location is required

How to understand and use , in JavaFX

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68248.html

相關(guān)文章

  • JavaFX 8 下簡化自定義控件的外部調(diào)用以及流式布局示例

    摘要:故可采用自定義控件的方式簡化外部的代碼調(diào)用。自定義控件的設(shè)計版本之后,提供寫法,此時要求必須繼承自節(jié)點對象,使用加載時,必須調(diào)用方法。 「博客搬家」 原地址: 簡書 原發(fā)表時間: 2017-05-21 有一個項目,需要模擬數(shù)千臺設(shè)備的工作情況,這數(shù)千個設(shè)備分為若干組,每組 100 臺。故需要設(shè)計一款 GUI 程序,包含 100 個自定義控件,模擬一組設(shè)備的工作情況,通過 List...

    MartinHan 評論0 收藏0
  • JavaFx系列教程之一:JavaFx+Springboot+Maven 開發(fā)打包教程

    摘要:最近在用開發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到上面,并且還想用的各種好處,集成了就可以愉快的用各種服務(wù)了。最重要的是打包工具。由于我是,一般用和,執(zhí)行命令會看到打包成了和兩種類型的安裝包。由于沒有計算機,所以還不知道打包成的狀態(tài)。 最近在用 JavaFx 開發(fā)窗體程序,并且以后打算把所有的窗體軟件切換到 JavaFx 上面,并且還想用 springboot 的__各種好處,集...

    Coding01 評論0 收藏0
  • Netbeans 8發(fā)布 支持Java 8

    摘要:和同步發(fā)布的是的。和支持,包括現(xiàn)成的和配置及數(shù)據(jù)源。更加靈活的提示,可以禁用和啟用該提示并更改警告級別。導(dǎo)航器顯示目標(biāo)。新的測試運行器支持。新的修復(fù)程序支持。版本控制增強功能支持工作副本,各種和支持增強功能。 和Java8同步發(fā)布的是Oracle的NetBeansIDE 8。NetBeans IDE 8.0 提供了現(xiàn)成的代碼分析器和編輯器,可在其中使用最新的 Java 8 技術(shù) -- ...

    沈儉 評論0 收藏0
  • 國外程序員整理的Java資源大全

    摘要:日期和時間處理日期和時間的函數(shù)庫。使用中可觀察序列,創(chuàng)建異步基于事件應(yīng)用程序的函數(shù)庫。為分布式系統(tǒng)提供延遲和容錯處理。發(fā)布使用本機格式分發(fā)應(yīng)用程序的工具。將程序資源和打包成和的本機文件。圖像處理用來幫助創(chuàng)建評估或操作圖形的函數(shù)庫。 好資源要分享原文 譯者 唐尤華 翻譯自 github akullpp 構(gòu)建 這里搜集了用來構(gòu)建應(yīng)用程序的工具。 Apache Maven:Mave...

    chengtao1633 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<