簡體   English   中英

TornadoFX中FXML文件的前綴路徑

[英]Prefix path for FXML files in TornadoFX

有沒有一種方法可以為TornadoFX使用的FXML文件提供路徑,並by fxml()使用其約定?

通常, TornadoFX通常會嘗試在src/main/resources定位FXML資源,但是,我們的應用程序很大,這現在可能是最好的主意。 在我們的情況下,我們希望將文件維護在子目錄中,即src/main/resources/fxml

我們想在應用程序啟動期間進行設置。 這可能嗎?

我已經在框架中添加了FXML定位器函數,以便您可以重寫此函數以更改資源位置。 聲明和默認實現如下所示:

var fxmlLocator: (component: UIComponent, location: String?) -> URL = { component, location ->
    val targetLocation = location ?: component.javaClass.simpleName + ".fxml"
    requireNotNull(component.resources.url(targetLocation)) { "FXML not found for ${component.javaClass} in $targetLocation" }
}

例如,您可以在app.init()覆蓋它,如下所示:

FX.fxmlLocator = { component, _ ->
    val targetLocation = "/fxml/${component.javaClass.simpleName}.fxml"
    requireNotNull(component.resources.url(targetLocation)) { "FXML not found for ${component.javaClass} in $targetLocation" }
}

但是,如果采用這種方法,則必須注意您的類名,因為不同軟件包中的相同類名會在/ fxml中尋找相同資源。 或者,更改實現以觀察包名稱。

我現在要提交該功能,您可以明天使用sonatype的最新快照版本進行試用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM