1

文字列/文字配列を描画して、文字間の間隔が等しい正方形で書かれるようにするにはどうすればよいですか?配列が大きいほど、正方形も大きくなります。文字数を長さで割って、長方形の特定の座標を取得する方法はありますか?

配列を調べて、forループを使用して文字列の全長を取得することを考えました。次に、それを私の正方形のエッジの長さにします。しかし、私はその方法を想像することはできません。

4

1 に答える 1

2

getFontMetrics()を使用して、文字列が占めるスペースを確認し、文字ごとに描画して、必要な余分なスペースを追加します。コードは次のとおりです。

import java.awt.*;

// ...

@Override
public void paint(Graphics g) {
    String testString = "The quick brown fox jumps.";
    Rectangle testRectangle = new Rectangle(10, 50, 200, 20);

    Graphics2D g2d = (Graphics2D)g;
    g2d.setColor(Color.BLACK);
    g2d.draw(testRectangle);

    FontMetrics fm = g2d.getFontMetrics();
    int stringWidth = fm.stringWidth(testString);
    int extraSpace  = (testRectangle.width - stringWidth) / (testString.length() - 1);
    int x = testRectangle.x;
    int y = testRectangle.y + fm.getAscent();
    for (int index = 0; index < testString.length(); index++) {
        char c = testString.charAt(index);
        g2d.drawString(String.valueOf(c), x, y);
        x += fm.charWidth(c) + extraSpace;
    }
}

そして、これはそれがどのように見えるかです:

ここに画像の説明を入力してください

より正確な結果を得るために、の代わりにをGraphics2D使用して計算することもできます。floatint

于 2013-02-27T17:09:19.967 に答える