[英]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.