Я хочу получить точную высоту моей строки в пикселях на моей панели. Поэтому я написал программу, которая рисует строку, а затем рисует вокруг нее прямоугольник.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
поэтому границы немного похожи на написание текста на выровненной бумаге? То есть. как в школе, где вам приходилось писать g и y под строкой. –