0
在代碼中,我正在讀取一個xml文件並在JPanel上相應地繪製內容。 如果文件包含標籤<LineBreak/>
我應該在下一個單詞前插入一個換行符。 我以爲我可以用一個Swing Line break - 覆蓋圖形繪製
g.drawString(..)
但需要,我知道接下來的突破,在這種情況下,我不知道。 有沒有其他方法通過重寫draw方法來做到這一點?
真的很感謝幫助。謝謝
在代碼中,我正在讀取一個xml文件並在JPanel上相應地繪製內容。 如果文件包含標籤<LineBreak/>
我應該在下一個單詞前插入一個換行符。 我以爲我可以用一個Swing Line break - 覆蓋圖形繪製
g.drawString(..)
但需要,我知道接下來的突破,在這種情況下,我不知道。 有沒有其他方法通過重寫draw方法來做到這一點?
真的很感謝幫助。謝謝
我想你將需要使用FontMetrics(g.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一個可能有用的實用工具類。