createDefaultSkin() 在 JavaFX 自定义控件中返回空错误
createDefaultSkin() returned null error in JavaFX custom control
亲爱的 Whosebug 社区,
我在 JavaFX 中实现了自定义控件扩展 Control
class。
一切正常,但我不断收到错误消息
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
的内容,但由于一切都按预期工作,我希望这个错误在不实施这些 classes 的情况下消失如果可能的话。
我没有使用 CSS,而且我找不到任何方法来手动设置默认皮肤。
非常感谢您的帮助。提前致谢!
自从 JavaFX 8(随 Java SE 8 一起提供)以来,就有了 createDefaultSkin() 方法,您可以(应该?)在自定义控件中覆盖它。
此外,我建议在自定义控件的构造函数中调用以下语句:
getStyleClass().setAll("my-custom-control");
然后覆盖方法 getUserAgentStylesheet() 并在引用的 css 文件中添加:
.my-custom-control {
-fx-skin: "mypackage.impl.skin.MyCustomControlSkin";
}
此引用 class 是自定义控件的默认外观。
但是正如文档和错误消息所解释的那样,也可以只覆盖提到的方法或只提供 css。
如果您不需要可换肤控件,而只想创建一个由其他控件组成的自定义控件,那么我建议您编写 fx:root based control instead of extending Control. Also have a look at my following answer: Should we use FXML in JavaFX custom controls or not?
亲爱的 Whosebug 社区,
我在 JavaFX 中实现了自定义控件扩展 Control
class。
一切正常,但我不断收到错误消息
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
的内容,但由于一切都按预期工作,我希望这个错误在不实施这些 classes 的情况下消失如果可能的话。
我没有使用 CSS,而且我找不到任何方法来手动设置默认皮肤。
非常感谢您的帮助。提前致谢!
自从 JavaFX 8(随 Java SE 8 一起提供)以来,就有了 createDefaultSkin() 方法,您可以(应该?)在自定义控件中覆盖它。
此外,我建议在自定义控件的构造函数中调用以下语句:
getStyleClass().setAll("my-custom-control");
然后覆盖方法 getUserAgentStylesheet() 并在引用的 css 文件中添加:
.my-custom-control {
-fx-skin: "mypackage.impl.skin.MyCustomControlSkin";
}
此引用 class 是自定义控件的默认外观。
但是正如文档和错误消息所解释的那样,也可以只覆盖提到的方法或只提供 css。
如果您不需要可换肤控件,而只想创建一个由其他控件组成的自定义控件,那么我建议您编写 fx:root based control instead of extending Control. Also have a look at my following answer: Should we use FXML in JavaFX custom controls or not?