103

Javaで文字列の長さ(ピクセル単位)を計算するには?

Swing を使用しない方が望ましい。

編集: Java2D で drawString() を使用して文字列を描画し、その長さをワード ラッピングに使用したいと思います。

4

5 に答える 5

158

AWT を使用するだけの場合は、Graphics.getFontMetrics(オプションで、デフォルト以外のフォントの場合はフォントを指定して) を使用して を取得しFontMetricsFontMetrics.stringWidth指定された文字列の幅を見つけます。

たとえば、 というGraphics変数がある場合はg、次のように使用します。

int width = g.getFontMetrics().stringWidth(text);

他のツールキットについては、より多くの情報を提供する必要があります。それは常にツールキットに依存します。

于 2008-11-03T12:36:40.507 に答える
65

常にツールキットに依存する必要はありません。または、Web コンテナーまたはヘッドレス環境に存在しないグラフィックス オブジェクトを最初に取得する必要があるため、FontMetrics アプローチを常に使用する必要もありません。

これを Web サーブレットでテストしたところ、テキスト幅が計算されました。

import java.awt.Font;
import java.awt.font.FontRenderContext;
import java.awt.geom.AffineTransform;

...

String text = "Hello World";
AffineTransform affinetransform = new AffineTransform();     
FontRenderContext frc = new FontRenderContext(affinetransform,true,true);     
Font font = new Font("Tahoma", Font.PLAIN, 12);
int textwidth = (int)(font.getStringBounds(text, frc).getWidth());
int textheight = (int)(font.getStringBounds(text, frc).getHeight());

これらの寸法に必要な値を追加して、必要なマージンを作成します。

于 2013-02-12T12:49:02.490 に答える