使用fxml从自定义控件继承

时间:2014-11-11 17:54:01

标签: java javafx fxml scenebuilder

我正在研究的项目是使用JavaFx框架,因此我们使用的是fxml文件和Scene Builder。我已根据web上的示例对我们的应用程序进行了自定义控件,并且它的工作非常精彩。但是,我们将拥有多个具有共同基本功能的自定义控件。因此,我希望将基本功能继承到自定义控件中。

我要做的是创建一个扩展自定义根控件类的自定义控件。这就是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 */
}

它是皮肤和骨骼,当我打开CustomControl.fxml时,我不希望在Scene Builder中看到太多,但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)
    ...

有没有办法做我想做的事情?如果是这样,我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

您必须将其插入fxml文件

 <?scenebuilder-classpath-element <path_to_CustomControl.jar>?>