如何确定图形字符串的长度?

时间:2011-06-03 20:43:47

标签: java swing graphics font-size

我正在使用Excel文档创建图形时间轴,我需要在该事件的标记旁边放置事件名称的小标记。其中一些很容易,并且是正确的,但其他一些是合理的,我需要弄清楚它们的宽度,以便我可以正确地抵消它们。

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

目前我使用平均值为10和32的平均值来平均像素宽度,但这并没有真正削减它。有人可以帮助我获得确切的偏移吗?enter image description here

5 个答案:

答案 0 :(得分:8)

该主题解释了如何做到这一点: Calculate the display width of a string in Java

您应首先获取字体指标,然后询问指标特定字符串的宽度。

答案 1 :(得分:4)

从java.awt.Graphics对象

,您可以调用getFontMetrics。 FontMetrics对象有一个getStringBounds方法,可以满足你的需要。

这里是the documentation

答案 2 :(得分:4)

答案 3 :(得分:4)

作为(读取:我的;-)一般规则,永远不要使用图形级别的drawString方法。相反,使用JLabel / CellRendererPane对将文本“标记”到任何组件上。

优点

  • 自动处理反别名
  • 尺寸计算在标签的大肠中进行,因此定位计算不需要任何低级方法,只需基于标签'prefSize

答案 4 :(得分:3)

TextLayout,显示为here,是另一种选择。