2012-03-07 76 views
0

在代碼中,我正在讀取一個xml文件並在JPanel上相應地繪製內容。 如果文件包含標籤<LineBreak/>我應該在下一個單詞前插入一個換行符。 我以爲我可以用一個Swing Line break - 覆蓋圖形繪製

g.drawString(..) 

但需要,我知道接下來的突破,在這種情況下,我不知道。 有沒有其他方法通過重寫draw方法來做到這一點?

真的很感謝幫助。謝謝

回答

0

我想你將需要使用FontMetricsg.getFontMetrics())來確定顯示一行文本所需的垂直像素的數量。當您調用drawString繪製第二行文本時,您必須傳遞一個足夠大的值,以使第二行文本繪製在第一行文本的下方。

String[] lines = myStringFromXmlDoc.split("\r\n|\r|\n"); 
int verticalOffset = 0; // your starting offset would probably be more dynamic 
foreach(String line : lines) 
{ 
    g.drawString(line, 0, verticalOffset); 
    // use FontMetrics to implement calcLineHeight for yourself 
    int currentLineHeight = calcLineHeight(line, g); 
    verticalOffset += currentLineHeight; 
} 

編輯:

也看到java.awt.font.LineBreakMeasurer一個可能有用的實用工具類。