我想在面板上以像素爲單位獲取我的字符串的確切高度。所以我寫了一個程序來繪製字符串,然後在它周圍繪製一個矩形。FontMetrics返回錯誤的高度
使用的FontMetrics我用getStringBounds方法讓我封閉的矩形。
但是它看起來錯誤:
我期待矩形完全包圍我的文字,但在頂部(與空間上左邊一點點,右),有空間。爲什麼它給了我這個結果?
這裏是我的代碼:
public class Test extends JPanel {
@Override
protected void paintComponent(Graphics g) {
Font font = new Font("Arial", Font.PLAIN, 60);
g.setFont(font);
FontMetrics fm = this.getFontMetrics(font);
String str = "100dhgt";
Rectangle2D rect = fm.getStringBounds(str, g);
int x = 5;
int y = 100;
g.drawRect(x, y - (int)rect.getHeight(), (int)rect.getWidth(), (int)rect.getHeight());
g.drawString(str, x, y);
}
public static void main(String[] args) {
JFrame f = new JFrame();
Test test = new Test();
f.add(test);
f.setVisible(true);
f.setSize(400, 400);
}
}
也考慮'TextLayout',審查[這裏](http://stackoverflow.com/a/16014525/ 230513)。 – trashgod
這樣的界限有點像寫在橫格紙上的文字? IE瀏覽器。就像在學校裏你必須寫下g和y一樣。 –