私は非常にうまく動作JComponent
する複数行の属性付き文字列を描画するを持っています:Textlayout
public static float drawMultiAttributedString(Graphics2D g2d, AttributedString str, String plainString, int maxWidth, int startX, float startY){
FontRenderContext fontRenderCtx = g2d.getFontRenderContext();
AttributedCharacterIterator attrCharIter = str.getIterator();
LineBreakMeasurer lineBreakMeasurer = new LineBreakMeasurer(attrCharIter, fontRenderCtx);
float x = startX;
float y = startY;
int next;
int limit; //länge bis zum nächsten umbruch
int charat;
String tested = plainString;
while (lineBreakMeasurer.getPosition() < attrCharIter.getEndIndex()) {
next = lineBreakMeasurer.nextOffset(maxWidth);
limit = next;
charat = tested.indexOf("\n", lineBreakMeasurer.getPosition()+1);
if(next > (charat - lineBreakMeasurer.getPosition()) && charat != -1){
limit = charat - lineBreakMeasurer.getPosition();
}
TextLayout layout = lineBreakMeasurer.nextLayout(maxWidth, lineBreakMeasurer.getPosition() + limit, false);
y += layout.getAscent(); //höhe des haupttextes
layout.draw(g2d, x, y);
y += layout.getDescent() + layout.getLeading();
}
return y - startY;
}
問題は、Textlayout
私が必要とするタブレータをレンダリングしないことです。タブレータも含める方法を知っている人はいますか? 何か案は?
どうもありがとう!