我創建了一個excel文檔的圖形化時間線,我需要在該事件的標記旁邊有小標籤的事件名稱。其中一些很容易,而且是正確的,但其他人是左對齊的,我需要弄清楚它們的寬度,以便我可以適當地抵消它們。如何確定圖形字符串的長度?
window.drawString("7/4-Fourth of July",horizontalIndex-Offset,verticalIndex);
目前我場均同時使用字體的大小平均10和32的像素寬度,但是這並沒有真正削減它。有人可以幫我得到確切的抵消?
我創建了一個excel文檔的圖形化時間線,我需要在該事件的標記旁邊有小標籤的事件名稱。其中一些很容易,而且是正確的,但其他人是左對齊的,我需要弄清楚它們的寬度,以便我可以適當地抵消它們。如何確定圖形字符串的長度?
window.drawString("7/4-Fourth of July",horizontalIndex-Offset,verticalIndex);
目前我場均同時使用字體的大小平均10和32的像素寬度,但是這並沒有真正削減它。有人可以幫我得到確切的抵消?
此線程解釋如何做到這一點: Calculate the display width of a string in Java
你應該先把字體規格,然後要求度量某些字符串有多寬。
from a java.awt.Graphics object,你可以調用getFontMetrics。 FontMetrics對象有一個getStringBounds方法,可以執行所需的任務。
TextLayout
,顯示here,是另一種選擇。
作爲(閱讀:我;-)通用規則,切勿使用圖形級別的drawString方法。相反,使用JLabel/CellRendererPane對將文本「印」到任何組件上。
優勢
從你的鏈接例子看來,'TextLayout'能夠準確地計算出所提供的文本字符串的上升,而'FontMetrics'似乎想要解釋可能不存在的變音符號和其他事項。 – 2011-06-04 08:57:45
@安德魯·湯普森:好點。 'TextLayout'似乎可以提供更加緊湊的邊界,並且可以使用樣式化文本。這是一個頭對頭[比較](http://stackoverflow.com/questions/5979795/how-to-calculate-the-number-of-rows-and-columns-in-each-row-a-text -takes-在-AJ/5998117#5998117)。 – trashgod 2011-06-04 09:10:43
沒有什麼比幫助分揀殘片更「開槍」了。 ;) – 2011-06-04 09:34:11