【发布时间】:2023-03-15 03:03:01
【问题描述】:
我想为DatePicker 创建一个新的皮肤类。按照有关如何操作的不同说明,例如guigarage,正确的方法是扩展SkinBase并通过将-fx-skin属性设置为皮肤类名称来加载新的皮肤类,所以我做了,但我得到了这个错误:
Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: sample.myDatePickerSkin cannot be cast to com.sun.javafx.scene.control.skin.DatePickerSkin
at com.sun.javafx.scene.control.behavior.DatePickerBehavior.onAutoHide(DatePickerBehavior.java:103)
如果你看看DatePickerBehavior.java:103:
@Override public void onAutoHide() {
// when we click on some non-interactive part of the
// calendar - we do not want to hide.
DatePicker datePicker = (DatePicker)getControl();
DatePickerSkin cpSkin = (DatePickerSkin)datePicker.getSkin();
cpSkin.syncWithAutoUpdate();
// if the DatePicker is no longer showing, then invoke the super method
// to keep its show/hide state in sync.
if (!datePicker.isShowing()) super.onAutoHide();
}
那么我做错了什么吗?或者我也应该写myDatePickerBehavior?
【问题讨论】:
-
请注意 com.sun.javafx.scene.control.skin.BaseSkin 不是公共 API。
标签: javafx