2016-08-16 7 views
0

DatePickerの新しいスキンクラスを作成したいと思います。それを行う方法についての異なる命令、例えば以下のguigarage正しい方法は、皮膚のクラス名に-fx-skinプロパティを設定することによりSkinBaseを拡張し、新しいスキンクラスをロードすることですので、私はやったが、私はこのエラーを得た:`DatePicker`、javafxの新しいスキンを作る方法

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も書きますか?

+0

com.sun.javafx.scene.control.skin.BaseSkinはパブリックAPIではありません。 – Puce

答えて

0

私はDatePickerSkinを拡張する必要があります。

package sample; 

import com.sun.javafx.scene.control.skin.DatePickerSkin; 
import javafx.scene.control.DatePicker; 

public class customDatePickerSkin extends DatePickerSkin { 
    public customDatePickerSkin(DatePicker datePicker) { 
     super(datePicker); 
    } 
} 
+0

com.sun.javafx.scene.control.skin.DatePickerSkinは公開APIではありません。 AFAIK、デフォルトのSkinsは、Java SE 9とJigsawで公開APIになります:http://hg.openjdk.java.net/openjfx/9/rt/file/0f32ff067545/modules/javafx.controls/src/main/java/ javafx/scene/control/skin – Puce

1

公式の方法をスキンはどちらか

  • (JavaFXの8.0以降)

または

com.sun.javafx.scene .control.skin.BaseSki nは公開APIではありません。

Java SE 9とJigsawでは、DatePickerSkinと他のデフォルトのskinsは公開されたAPI AFAIKになりますのでご注意ください。それがあなたの要求を満たしていれば、それらを拡張することは安全でなければなりません。

関連する問題