Как определить длину графической строки? - PullRequest
9 голосов
/ 04 июня 2011

Я создаю графическую временную шкалу из документа Excel, и мне нужно иметь небольшие теги имени события рядом с маркером для этого события.Некоторые из них просты и выровнены по правому краю, но другие выровнены по левому краю, и мне нужно выяснить их ширину, чтобы я мог правильно сместить их.

window.drawString("7/4-Fourth of July",horizontalIndex-Offset,verticalIndex);

В настоящее время я усредняю ​​ширину пикселя, используя среднее значение для обоих размеров шрифта 10 и 32, но это на самом деле не уменьшает его.Может ли кто-нибудь помочь мне получить точное смещение? enter image description here

Ответы [ 5 ]

8 голосов
/ 04 июня 2011

В этой теме объясняется, как это сделать: Рассчитать ширину отображения строки в Java

Сначала вы должны получить метрику шрифта, а затем спросить метрики о ширине определенной строки.

4 голосов
/ 13 июня 2011

Как правило (читай: my ;-), никогда не используйте методы drawString на уровне графики.Вместо этого используйте пару JLabel / CellRendererPane для «печати» текста на любом компоненте.

Преимущества

  • Сглаживание обрабатывается автоматически. Размеры
  • выполняются в недрах меток, поэтому для определения местоположения не требуются низкоуровневые методы, нопросто на основе меток prefSize
4 голосов
/ 04 июня 2011

и другой хорошей альтернативой является SwingUtilities # computeStringWidth (FontMetrics fm, String str)

4 голосов
/ 04 июня 2011

из объекта java.awt.Graphics, вы можете вызвать getFontMetrics.у объекта FontMetrics есть метод getStringBounds, который делает то, что вам нужно.

здесь документация

3 голосов
/ 04 июня 2011

TextLayout, показанный здесь , является другой альтернативой.

...