Проект, над которым я работаю, использует фреймворк JavaFx, поэтому мы используем файлы fxml и Scene Builder. Я создал собственный элемент управления для нашего приложения, следуя примерам, найденным в веб-странице, и это прекрасно работает. Однако у нас будет несколько настраиваемых элементов управления с общей базовой функциональностью. Поэтому я хотел бы унаследовать базовую функциональность в пользовательском элементе управления.
Что я пытаюсь сделать, так это создать пользовательский элемент управления, который расширяет пользовательский класс корневого элемента управления. Вот как выглядит файл CustomControl.fxml:
<?import com.custom.CustomRootControl ?>
<fx:root type="CustomRootControl" xmlns:fx="http://javafx.com/fxml">
/* Add children here... */
</fx:root>
Прямо сейчас мой класс CustomRootControl выглядит так:
public class CustomRootClass extends Pane {
/* Customization to be performed */
}
Это кожа да кости, и я не ожидаю увидеть многое в Scene Builder, когда открою CustomControl.fxml, но файл fxml не откроется в Scene Builder. Вместо этого я получаю следующее сообщение об ошибке:
java.io.IOException: javafx.fxml.LoadException: <path_to_CustomControl.fxml>
...
Caused by: javafx.fxml.LoadException: <path_to_CustomControl.fxml>
...
Caused by: java.lang.ClassNotFoundException: com.custom.CustomRootControl
at java.lang.ClassLoader.findClass(ClassLoader.java:530)
...
Есть ли способ сделать то, что я пытаюсь сделать? И если да, то как мне это сделать?