Java Applet:如何绘制方形的字符串?

时间:2013-02-27 17:05:55

标签: java arrays

我如何绘制一个字符串/字符数组,以便它以方形形状写入,字符之间的间距相等?阵列越大,方块越大。有没有办法按字母长度划分字符数并在矩形中获得某些坐标?

我考虑过使用for循环遍历数组并获取整个字符串长度。然后使我的方形边缘的长度。但我无法想象如何。

1 个答案:

答案 0 :(得分: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;
    }
}

这就是它的样子:

enter image description here

为了获得更准确的结果,Graphics2D还允许您使用float代替int进行计算。