2016-12-26 26 views
1

私はFontオブジェクトを持っていますが、フォントの幅と高さの両方が必要です。私はgetSize()がフォントの高さをpoint-size of a font is generally the heightとして返すことを知っていますが、フォントの幅を決めるのは駄目です。JavaFXフォントの幅と高さの決定

また、Fontでサポートされている特定の文字の幅を判断できることも、容認できる解決策になります。

loadFontメソッドを使用するときに幅が指定されていることを推測しますが、ドキュメントでは、サイズパラメータがフォントの幅または高さを表すかどうかは指定されていません。

使用されているすべてのフォントは、そしてDejaVuサンセリフモノGNU FreeMono、及びルシーダサンセリフユニコードとしてモノスペースフォントです。

+0

1つの文字の幅は、フォントを使用するグラフィックスコンテキストによって異なります。フォントをテキスト文字列に使用する場合は、参考になります:[javaFXの文字列のピクセル幅を計算する方法](http://stackoverflow.com/q/13015698/7274990) – Calculator

+0

関連項目:[JavaFX FontMetrics](http://stackoverflow.com/questions/32237048/javafx-fontmetrics) – jewelsea

答えて

3

私は同じ問題を抱えており、簡単な方法はないようです。私の記憶が正しければ、ここでのトリックは-1にprefWidthを設定することです

double computeTextWidth(Font font, String text, double wrappingWidth) { 
    Text helper = new Text(); 
    helper.setFont(font); 
    helper.setText(text); 
    // Note that the wrapping width needs to be set to zero before 
    // getting the text's real preferred width. 
    helper.setWrappingWidth(0); 
    helper.setLineSpacing(0); 
    double w = Math.min(helper.prefWidth(-1), wrappingWidth); 
    helper.setWrappingWidth((int)Math.ceil(w)); 
    double textWidth = Math.ceil(helper.getLayoutBounds().getWidth()); 
    return textWidth; 
} 

:私のソリューションは、正しいフォントでText要素を作成し、それはサイズだ確認することでした。 JavaDocを参照してください。

関連する問題