国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

joywek / 650人閱讀

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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í)可對(duì)該自定義控件方便地設(shè)計(jì)邏輯代碼。

若使用 FXML 文件時(shí),如:


    
    

此時(shí) 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
        }
    }
}

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

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

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


    
    

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

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
        }
    }
}

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

3. 參考資料

JavaFX and Maven: NullPointerException: Location is required

How to understand and use , in JavaFX

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68248.html

相關(guān)文章

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

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

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

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

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

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

    沈儉 評(píng)論0 收藏0
  • 國(guó)外程序員整理的Java資源大全

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

    chengtao1633 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<