2012-03-07 1 views
0

コードでは、xmlファイルを読み込んでJPanelで内容をペイントしています。 ファイルに<LineBreak/>というタグが含まれている場合は、次の単語の前に改行を挿入することになっています。 私はスイングラインブレークオーバーライドグラフィックス描画

g.drawString(..) 

を使用することができると思ったが、それは、私はこのケースでは、私にはない休憩を、以下のものを知っていることが必要です。 drawメソッドをオーバーライドすることでこれを行う他の方法はありますか?

本当に助けていただきありがとうございます。ありがとう

答えて

0

私はFontMetricsg.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を参照してください。