テキストがすべてラベルの境界に収まらない場合は、JavaFXラベルのフォントのサイズを自動的に変更する必要があります。私はこれを行うにはいくつかの素晴らしいコード(ここではResize JavaFX Label if overrun)を見つけましたが、問題は、コードはフォントサイズと引数を取ることです。私は、アプリケーションがCSSを使ってフォントサイズを設定しているので、Label.getFont()はデフォルト設定を返します。私のCSSはフォントサイズを30に設定していますが、これまでLabelを調べる方法はすべてデフォルト設定の12を返しています。JavaFX Labelで適用されたフォントを検索する方法は?
私はそれを見てみましたが、それを探す。 Label.getStyle()は空の文字列を返します。 getCSSMetaData()は面白い設定をたくさん返します。私はそこでフォントを見つけてサブプロパティを見ることができましたが、フォントサイズ12と別のスタイル名のデフォルト値を保存しています。
これは私が私が私がフィードバックカードとフォントサイズを見つける必要がある知っている使用しています私のスタイルシートファイルから設定されています、マッピングは
._Feedback_Card {
-fx-font-size: 30px;
-fx-font-weight: bold;
-fx-text-fill: rgba(0,0,0,.9);
-fx-background-color: white;
-fx-border-color: white;
-fx-border-width: 0;
-fx-alignment: center;
-fx-text-alignment: center;
-fx-font-family: Arial Unicode MS;
-fx-effect: dropshadow(gaussian, #b4b4b4, 6,0,0,2);
}
名に振り回されてはいけませんがあります何らかの理由でこのコンポーネントをそのクラス名にマップするコード内の別の場所です。私は正確な仕組みを知らないので、それは同僚によって書かれています。しかし、与えられた名前は私がルートノード上の領域を探してみました:
Region node = (Region)jsLayoutCollection.jsDisplayLayoutCollection.fGetFXParent().lookup("._Feedback_Card");
String sStream = node.getCssMetaData().stream()
し、私は、フォントのプロパティのためのストリームを介して見えました。しかし、それは再びフォントを返しましたが、スタイルシートが設定する30ではなく、デフォルトの12です。
このプロパティはどこに適用されていますか、どのように見ますか?この情報を把握するのは簡単なはずですが、見つけられません。後でフォントを設定するのはとても簡単です:
Label.setStyle("-fx-font-size: " + fontSize + "px");
何か助けていただければ幸いです。
ああ! applyCss関数がありませんでした。いったん私がそれを呼んだら、フォントはそのサイズに対して30を返しています。私はそれが何か単純なことを知っていた...ありがとう – Mark