4

CSSなしでJavaFXコンポーネントのスタイルを設定することは可能ですか?つまり、CSSなしでCSSを使用して達成できるのと同じことを達成できますか?「CSSなし」とは、「CSS文字列なし」(あなたが入れたもの)を意味しsetStyle(String)ます。

新しいスタイルの文字列を作成してスタイルを更新することは、私には非常に非効率的です。次のスタイルで背景色を白(事前にはわかりません)に動的に変更するには、正規表現または連結文字列に置き換える必要があります。

-fx-background-color: red;
-fx-border-color: black;
-fx-border-width: 1;

とにかく、これらの文字列は内部的にいくつかの構造/オブジェクトに解析されると思いますが、なぜこれらの構造が公開されないのですか?

私はJavaFXを初めて使用します。CSS継承を使用できることは知っていますが、それは特効薬ではなく、文字列の連結がまだ存在します。

4

1 に答える 1

3

JavaFX 2.2の時点では、cssを適用することによってのみ達成できるスタイルのいくつかの側面があります。質問での地域の背景色と境界線情報の定義は、「cssを介してのみ実行できること」のカテゴリに分類されます。

cssスタイルシートでさまざまなスタイルクラスを定義し、ノードのスタイルクラスを操作することでスタイルを設定できます。これは、 setStyleメソッドを使用するのではなく、cssを使用するための推奨される方法です。シーンまたはノード階層に適用されるスタイルシートのリストを変更することもできます。ただし、これは実際には、cssを使用せずにスタイルを設定するのではなく、CSSを別の方法で使用しているだけです。

JavaFX APIで公開されているため、fxmlまたはjavaコードで実行できるスタイルのいくつかの側面があります。たとえば、フォントを適用する代わりに、setFontapiまたはfxmlfont属性を使用してラベルにフォントを設定できます。 cssstyle-fx-fontを使用してラベルに追加します。

将来のJavaFXバージョン(JavaFX 8など)では、これらの多くに、CSSを使用せずにコードにスタイルを適用するために使用できるパブリックAPIも含まれるようになります。特にJavaFX8.0の場合、プログラムによる操作のためにリージョンの背景と境界線のスタイル設定プロパティを公開する新しいAPIが定義されています。RT-24506:リージョンの背景と境界線のパブリックAPIを参照してください。これにより、質問で提供した例のスタイリングをプログラムで実行できるようになります。

また、将来のJavaFXバージョンでは、CSS情報のオブジェクトモデルが提案されているため、ノードのCSS属性は、現在の文字列ベースのsetStyleおよびgetStyleClassメソッドに加えて、正式なJavaAPIを介して表示および操作できます。RT-17293:JavaのCSSスタイルオブジェクトモデルを参照してください。このような機能に興味がある場合は、機能リクエストに投票してください。

于 2012-10-18T00:37:27.030 に答える