Я добавил функцию локатора 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.