モジュール javafx.graphics
パッケージ javafx.css

クラスCssMetaData<S extends Styleable,V>

  • 型パラメータ:
    S - Styleableの型
    V - 解析済値の変換先の型
    直系の既知のサブクラス:
    FontCssMetaData

    public abstract class CssMetaData<S extends Styleable,V>
    extends Object
    CssMetaDataインスタンスは、CSSスタイルに関する情報を提供し、CSSでプロパティ値を設定できるようにするフックを提供します。 CSSプロパティ名、CSS値の変換先の型およびプロパティのデフォルト値をカプセル化します。

    CssMetaDataは、.cssファイルおよびStyleablePropertyで構文として表すことができる値の間のブリッジです。 CssMetaDataとStyleablePropertyの間には1対1の関係があります。 通常、NodeのCssMetaDataにはその祖先のCssMetaDataが含まれます。 たとえば、RectangleのCssMetaDataには、ShapeのCssMetaDataの他にNodeのCssMetaDataも含まれます。 CSSの処理中、CSSエンジンはNodeのCssMetaDataに対して繰り返され、各propertyの解析済値を検索し、解析済値を変換し、StyleablePropertyの値を設定します。

    Node.getCssMetaData()メソッドは、List<CssMetaData>を取得するために呼び出されます。 このメソッドは頻繁に呼び出され、呼出しごとにリストを作成するのではなく、より効率的に静的リストを返します。 一般に、CssMetaDataを持つNodeクラスは静的メソッドgetClassCssMetaData()を実装し、またgetCssMetaData()によって単純にgetClassCssMetaData()を返すようにすることが普通です。 getClassCssMetaData()の目的は、サブクラスが一部の祖先のCssMetaDataを簡単に含めることができるようにすることです。

    StyleablePropertyFactoryにより、StyleablePropertyとそれに対応するCssMetaDataの作成が非常に単純化されます。

    この例は一般的な実装を示します。

    
     private DoubleProperty gapProperty = new StyleableDoubleProperty(0) {
         @Override
          public CssMetaData<MyWidget,Number> getCssMetaData() {
              return GAP_META_DATA;
          }
    
          @Override
          public Object getBean() {
              return MyWidget.this;
          }
    
          @Override
          public String getName() {
              return "gap";
          }
     };
    
     private static final CssMetaData GAP_META_DATA =
         new CssMetaData<MyWidget,Number>("-my-gap", StyleConverter.getSizeConverter(), 0d) {
    
            @Override
            public boolean isSettable(MyWidget node) {
                return node.gapProperty == null || !node.gapProperty.isBound();
            }
    
            @Override
            public StyleableProperty<Number> getStyleableProperty(MyWidget node) {
                return (StyleableProperty<Number>)node.gapProperty;
            }
     };
    
     private static final List<CssMetaData<? extends Node, ?>> cssMetaDataList;
     static {
         List<CssMetaData<? extends Node, ?>> temp =
             new ArrayList<CssMetaData<? extends Node, ?>>(Control.getClassCssMetaData());
         temp.add(GAP_META_DATA);
         cssMetaDataList = Collections.unmodifiableList(temp);
     }
    
     public static List<CssMetaData<? extends Node, ?>> getClassCssMetaData() {
         return cssMetaDataList;
     }
    
     @Override
     public List<CssMetaData<? extends Node, ?>> getCssMetaData() {
         return getClassCssMetaData();
     }
     
    導入されたバージョン:
    JavaFX 8.0
    関連項目:
    StyleablePropertyFactory
    • コンストラクタの詳細

      • CssMetaData

        protected CssMetaData​(String property,
                              StyleConverter<?,V> converter,
                              V initialValue,
                              boolean inherits,
                              List<CssMetaData<? extends Styleable,?>> subProperties)
        指定したパラメータを使用し、サブプロパティは指定しないでCssMetaDataを構築します。
        パラメータ:
        property - CSSプロパティ
        converter - CSSの解析済値をJavaオブジェクトに変換するために使用されるStyleConverter
        initialValue - 対応するStyleablePropertyの初期値またはデフォルト値
        inherits - このプロパティがCSS継承を使用する場合はtrue
        subProperties - このプロパティのサブプロパティ。 たとえば、-fx-fontプロパティには、-fx-font-family、-fx-font-size、-fx-font-weightおよび-fx-font-styleのサブプロパティがあります。
      • CssMetaData

        protected CssMetaData​(String property,
                              StyleConverter<?,V> converter,
                              V initialValue,
                              boolean inherits)
        指定したパラメータを使用し、サブプロパティは指定しないでCssMetaDataを構築します。
        パラメータ:
        property - CSSプロパティ
        converter - CSSの解析済値をJavaオブジェクトに変換するために使用されるStyleConverter
        initialValue - 対応するStyleablePropertyの初期値またはデフォルト値
        inherits - このプロパティがCSS継承を使用する場合はtrue
      • CssMetaData

        protected CssMetaData​(String property,
                              StyleConverter<?,V> converter,
                              V initialValue)
        指定したパラメータを使用し、継承はfalseに設定し、サブプロパティは指定しないでCssMetaDataを構築します。
        パラメータ:
        property - CSSプロパティ
        converter - CSSの解析済値をJavaオブジェクトに変換するために使用されるStyleConverter
        initialValue - 対応するStyleablePropertyの初期値またはデフォルト値
      • CssMetaData

        protected CssMetaData​(String property,
                              StyleConverter<?,V> converter)
        指定したパラメータとnullのinitialValueを使用し、継承はfalseに設定し、サブプロパティは指定しないでCssMetaDataを構築します。
        パラメータ:
        property - CSSプロパティ
        converter - CSSの解析済値をJavaオブジェクトに変換するために使用されるStyleConverter
    • メソッドの詳細

      • isSettable

        public abstract boolean isSettable​(S styleable)
        特定のノードの対応するプロパティが設定可能かどうかをチェックします。 このメソッドは、特定のプロパティに対してスタイルが検索される前に呼び出されます。 これは抽象メソッドであるため、コードではプロパティを拡張せずにプロパティが設定可能かどうかをチェックできます。 一般に、プロパティがnullでなく、バインドされてもいなければ、そのプロパティは設定可能です。
        パラメータ:
        styleable - プロパティ値が設定されるStyleable
        戻り値:
        プロパティが設定可能な場合はtrue。
      • getStyleableProperty

        public abstract StyleableProperty<V> getStyleableProperty​(S styleable)
        特定のNodeの対応するStyleablePropertyを返します。 このメソッドを呼び出すとプロパティが拡張されることに注意してください。
        パラメータ:
        styleable - プロパティが返されるStyleable
        戻り値:
        特定のStyleableについて、このCssMetaDataに対応するStyleableProperty
      • getProperty

        public final String getProperty()
        戻り値:
        CSSプロパティ名
      • getConverter

        public final StyleConverter<?,V> getConverter()
        戻り値:
        CSS値からJavaオブジェクトへの変換を処理するCSSコンバータ
      • getInitialValue

        public V getInitialValue​(S styleable)
        CssMetaDataの初期値はコード内のStyleablePropertyのデフォルト値に対応します。 たとえば、Shape.fillのデフォルト値はColor.BLACKで、Shape.StyleableProperties.FILLのinitialValueもColor.BLACKです。

        ただし、例外もあります。 initialValueは、Nodeの状態によって異なる場合があります。 ScrollBarのデフォルトの向きは水平です。 ただし、ScrollBarが垂直の場合は、このメソッドはOrientation.VERTICALを返す必要があります。 そうでない場合、初期値が適用されるときに、垂直のScrollBarが誤って水平のScrollBarに設定されます。

        パラメータ:
        styleable - スタイル可能な
        戻り値:
        プロパティの初期値。nullの場合があります。
      • getSubProperties

        public final List<CssMetaData<? extends Styleable,?>> getSubProperties()
        サブプロパティは、このプロパティの構成プロパティを参照します(ある場合)。 たとえば、-fx-font-weightは-fx-fontのサブプロパティです。
        戻り値:
        サブ・プロパティのリスト
      • isInherits

        public final boolean isInherits()
        trueの場合、このプロパティの値は、このプロパティの親の計算済の値と同じです。
        戻り値:
        継承がtrueでない限り、デフォルトではfalse
        関連項目:
        CSS継承
      • equals

        public boolean equals​(Object obj)
        2つのCssMetaDataオブジェクトは、そのproperty値が等しい場合は等しいとみなされます。
        オーバーライド:
        equals 、クラス:  Object
        パラメータ:
        obj - 比較対象の参照オブジェクト。
        戻り値:
        objが等しい場合はtrue、そうでない場合はfalse
        関連項目:
        Object.hashCode()HashMap