Swing Line break - переопределение графики - PullRequest
0 голосов
/ 07 марта 2012

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

g.drawString(..)

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

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

1 Ответ

0 голосов
/ 07 марта 2012

Я думаю, вам нужно будет использовать 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 для возможного полезного служебного класса.

...