0

コードでは、xml ファイルを読み取り、それに応じて JPanel にコンテンツを描画しています。ファイルにタグが含まれている場合、<LineBreak/>次の単語の前に改行を挿入することになっています。私は私が使用できると思った

g.drawString(..)

しかし、それには休憩の後に何が続くかを知っている必要がありますが、この場合は知りません。描画メソッドをオーバーライドしてこれを行う他の方法はありますか?

助けてくれて本当にありがとう。ありがとう

4

1 に答える 1

0

テキスト行を表示するために必要な垂直ピクセル数を決定するには、FontMetrics ( g.getFontMetrics() )を使用する必要があると思います。drawString を呼び出してテキストの 2 行目を描画するときは、テキストの 2 行目がテキストの 1 行目の下に描画されるように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;
}

編集:

有用なユーティリティ クラスについては、java.awt.font.LineBreakMeasurerも参照してください。

于 2012-03-07T19:51:17.080 に答える