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 и специфичное для локали форматирование.

Другие вопросы по тегам