我正在使用Excel文档创建图形时间轴,我需要在该事件的标记旁边放置事件名称的小标记。其中一些很容易,并且是正确的,但其他一些是合理的,我需要弄清楚它们的宽度,以便我可以正确地抵消它们。
window.drawString("7/4-Fourth of July",horizontalIndex-Offset,verticalIndex);
目前我使用平均值为10和32的平均值来平均像素宽度,但这并没有真正削减它。有人可以帮助我获得确切的偏移吗?
答案 0 :(得分:8)
该主题解释了如何做到这一点: Calculate the display width of a string in Java
您应首先获取字体指标,然后询问指标特定字符串的宽度。
答案 1 :(得分:4)
,您可以调用getFontMetrics。 FontMetrics对象有一个getStringBounds方法,可以满足你的需要。
答案 2 :(得分:4)
答案 3 :(得分:4)
作为(读取:我的;-)一般规则,永远不要使用图形级别的drawString方法。相反,使用JLabel / CellRendererPane对将文本“标记”到任何组件上。
优点
答案 4 :(得分:3)
TextLayout
,显示为here,是另一种选择。