Swing-Renderer zum Anzeigen des vollständigen Texts in einer Spalte erstellt Endlosschleife

Ich möchte eine Swing-Tabelle rendern, wobei die Höhe der Zeile davon abhängt, wie viel Text in einer Spalte angezeigt wird, damit der gesamte Text in der Zelle angezeigt wird.

Das Problem ist, dass, wenn ich die Höhe auf die Zeile einstelle, eine Endlosschleife erstellt wird. Wie könnte ich das lösen?

Dies ist mein Renderer

final class RenderTextAreaMessage extends DefaultTableCellRenderer {

  JTextArea textareaMessage;

  @Override 
  public Component getTableCellRendererComponent(JTable aTable, Object aNumberValue, boolean aIsSelected, 
    boolean aHasFocus, int aRow, int aColumn ) {  
     System.out.println("aa");
     String value = (String)aNumberValue;

     textareaMessage = new JTextArea();

     textareaMessage.setLineWrap(true);
     textareaMessage.setWrapStyleWord(true);
     textareaMessage.setText(value);
     textareaMessage.setBorder(null);
     textareaMessage.setMargin(null);

    Component renderer = super.getTableCellRendererComponent(
            aTable, aNumberValue, aIsSelected, aHasFocus, aRow, aColumn
    );

      Font fontType = textareaMessage.getFont();
      FontMetrics fontMet = textareaMessage.getFontMetrics(fontType);
      int fheight = fontMet.getHeight();

      int lineCount = textareaMessage.getLineCount();
      int rowHeight = lineCount * fheight;

      aTable.setRowHeight(aRow,rowHeight+6);      

    return textareaMessage;
  }
}

Antworten auf die Frage(0)

Ihre Antwort auf die Frage