0

JavaFX 2 でレンダリングされたテキスト ノードの幅を決定する際に問題があります。標準スタイルを使用すると、すべて正常に動作します。

Text testText = new Text("test");
double width = testText.getLayoutBounds().getWidth();

しかし、このように異なるフォントサイズを設定するカスタム CSS スタイルを適用すると

.text-class {
    -fx-font: 20px "Tahoma Bold";
}

上記の例に CSS クラスを適用します。

Text testText = new Text("test");
testText.getStyleClass().add("text-class");
double width = testText.getLayoutBounds().getWidth();

最初のケースと同じ結果が得られるので、スタイリングは明らかに遅れます。

JavaFX 2でCSSスタイルのテキストの幅を決定するにはどうすればよいですか? どういうわけか、すぐに CSS スタイルを強制することは可能ですか?

4

2 に答える 2

2

CSS の適用はすぐに行われるわけではないので、実際にテキストのサイズが変更されたときにアクションを実行することが問題を解決する方法です。

testText.layoutBoundsProperty()

境界に応答するプロパティであり、不変オブジェクトを格納します。サイズと位置を示す他のプロパティもあります。できることは、このプロパティに変更リスナーをアタッチし、変更が行われたときに変更を適用することです。

于 2013-03-08T12:00:48.660 に答える
1

CSSスタイルは、layoutBoundsが配置された親コンテナの影響を受ける横にある、次のいわゆるパルスに適用されます。

于 2013-03-01T08:56:09.767 に答える