createDefaultSkin()在JavaFX自定义控件中返回空错误

createDefaultSkin()在JavaFX自定义控件中返回空错误,javafx,custom-controls,Javafx,Custom Controls,亲爱的社区: 我在JavaFX扩展control类中实现了一个自定义控件。 一切正常,但我一直收到错误信息 Jan 30, 2015 8:33:31 AM javafx.scene.control.Control impl_processCSS SEVERE: The -fx-skin property has not been defined in CSS for CustomView@19e4d42 and createDefaultSkin() returned null. 当我运行应

亲爱的社区:

我在JavaFX扩展
control
类中实现了一个自定义控件。 一切正常,但我一直收到错误信息

Jan 30, 2015 8:33:31 AM javafx.scene.control.Control impl_processCSS
SEVERE: The -fx-skin property has not been defined in CSS for 
CustomView@19e4d42 and createDefaultSkin() returned null.
当我运行应用程序时

我读了很多关于
SkinBase
BehaviorBase
的书,但是由于一切都按照它应该的方式工作,如果可能的话,我希望这个错误在不实现这些类的情况下消失

我没有使用CSS,也找不到任何手动设置默认皮肤的方法

我非常感谢你的帮助。提前谢谢

由于JavaFX8(随JavaSE8提供),因此有一个方法-方法,您可以(应该?)在自定义控件中重写它

此外,我建议在自定义控件的构造函数中调用以下语句:

getStyleClass().setAll("my-custom-control");
然后重写该方法,并在引用的css文件中添加:

.my-custom-control {
    -fx-skin: "mypackage.impl.skin.MyCustomControlSkin";
}
其中,此引用类是自定义控件的默认外观

但是,正如文档和错误消息所解释的,只重写所提到的方法或者只提供css也是可以的


如果您不需要可蒙皮控件,但只想创建一个由其他控件组成的自定义控件,那么我建议编写一个而不是扩展控件。请看我的以下回答:

没有皮肤,如何编写自定义
控件?把所有的东西都混在一个班里?这肯定不是JavaFX开发人员想要的。我2天前刚开始使用JavaFX,只是需要它来完成一项非常具体的任务。我知道这可能不是最好的做法,但是的,在这一节课中,所有内容都混合在一起,并按预期在屏幕上显示。所以我想这不会错的:)谢谢你的回答!问题是我没有使用样式表,也没有css文件可供参考。由于我也没有
Skin
类(因为我认为/希望我不需要它),我不知道在createDefaultSkin()中返回什么。eckig说我的方法在政治上不正确可能是正确的,但它仍在正常工作,我真的需要一种简单的方法来避免Java声明为“严重”的错误消息(尽管应用程序没有崩溃)。这就成功了,非常感谢:)我最终扩展了
窗格
类,现在错误消失了。谢谢