2012-03-07 3 views
0

В коде я читаю xml-файл и рисую содержимое соответственно на JPanel. Если файл содержит тег <LineBreak/> Я должен вставить разрыв строки перед следующим словом. я думал, что я мог бы использоватьSwing Line break - переопределение графика рисования

g.drawString(..) 

но требует, чтобы я знал, что следует перерыв, который в данном случае, я не знаю. Есть ли другой способ сделать это, переопределив метод draw?

Действительно оцените помощь. Спасибо

ответ

0

Я думаю, вам нужно будет использовать FontMetrics (g.getFontMetrics()), чтобы определить количество вертикальных пикселей, необходимых для отображения строки текста. Когда вы вызываете drawString для рисования второй строки текста, вы должны передать значение y достаточно большим, чтобы вторая строка текста была обращена ниже первой строки текста.

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; 
} 

Edit:

Также см java.awt.font.LineBreakMeasurer для, возможно, полезной утилиты класса.