Java - FontMetrics без графики - PullRequest
30 голосов
/ 16 мая 2010

Как получить FontMetrics без использования графики? Я хочу получить FontMetrics в конструкторе, теперь я делаю так:

BufferedImage bi = new BufferedImage(5, 5, BufferedImage.TYPE_INT_RGB);
FontMetrics fm = bi.getGraphics().getFontMetrics(font);
int width = fm.stringWidth(pattern);
int height = fm.getHeight();

Ответы [ 2 ]

27 голосов
/ 08 августа 2013

Нет, вам необязательно получать / использовать графический объект:

Font font = new Font("Helvetica",Font.PLAIN,12);
Canvas c = new Canvas();
FontMetrics fm = c.getFontMetrics(font);

Если вы сейчас позвоните c.getGraphics(), он вернет ноль. Это (холст) также будет работать в режиме без головы .

21 голосов
/ 16 мая 2010

Хмм ... Вполне логично, что вам нужна графика для получения FontMetrics. Высота шрифта, ширина и т. Д. Могут различаться на разных экранах.

Если у вас есть какой-нибудь компонент, вы можете использовать его для получения FontMetrics:

component.getFontMetrics(font);
...