TextLayout с переводом строки и вкладкой
У меня есть 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
не отображать табуляторы, которые мне нужны. У кого-нибудь есть идеи, как я мог бы включить и табуляторы? Есть идеи?
Спасибо большое!
1 ответ
JTable
с одним или несколькими пользовательскими средствами визуализации может быть более простой альтернативой. DefaultTableCellRenderer
продолжается JLabel
, который допускает HTML и специфичное для локали форматирование.