短い答え、いいえ。
AStyleableProperty
には対応する がありCssMetaData
ます。この後者のクラスには、次のようなメソッドisSettable(Styleable)
があります(強調鉱山):
指定されたノードの対応するプロパティが設定可能かどうかを確認します。このメソッドは、指定されたプロパティのスタイルが検索される前に呼び出されます。プロパティを展開せずにプロパティが設定可能かどうかをコードで確認できるように、これは抽象的です。通常、プロパティが null でないか、バインドされていない場合、プロパティは設定可能です。
このメソッドの存在は、StyleableProperty
何らかの理由で a が設定できない可能性があることを示しています。
独自StyleableProperty
の および対応するCssMetaData
を実装する場合は、このメソッドを実装する必要があります。StyleableProperty
も実装する場合、Property
このメソッドは がバインドされているかどうかを確認し、Property
バインドされている場合は返すfalse
必要があります。これは、すべての内部 に対して行われることですStyleableProperty
(これもProperty
です)。また、 を使用StyleablePropertyFactory
している場合は、が のインスタンスであるCssMetaData
かどうかがチェックされ、バインドされた状態がチェックされます。StyleableProperty
Property
isSettable
true が返されたとしても、CSS エンジンがStyleableProperty
. あなたが自分自身に言及したように、境界Property
を設定することはできません。のすべての標準実装はProperty
、そうしようとすると例外をスローします。
そうは言っても、プロパティの設定方法には注意する必要があります。の設定方法には優先順位がありStyleableProperty
ます。のJavadoc は、StyleableProperty
どのメソッドが他のメソッドよりも優先されるかを示します。
StyleableProperty を使用すると、javafx.beans.property を CSS からスタイル設定できます。
このインターフェースにより、CSS 処理と javafx.beans.property の間の調整が可能になります。実装は、値を設定するための優先順位が昇順であり、同じ重要性を想定していることを保証します。
- Application.setUserAgentStylesheet(java.lang.String) のユーザー エージェント スタイルシートのスタイル
- Node.setOpacity(double) の呼び出しなど、コードから設定された値
- Scene.getStylesheets() または Parent.getStylesheets() の作成者スタイルシートのスタイル
- Node.setStyle(java.lang.String) からのスタイル