JTable zweite Spalte doppelzeilig

Hallo,

ich moechte gerne eine Tabelle erstellen :). Die Tabelle bezieht ihre Daten aus einer ArrayList die zur Laufzeit erstellt wird.

Die ArrayList in ein Array umzuwandeln und diese in die jeweiligen Zeilen zu laden geling auch ohne Probleme:D, jedoch moechte ich die Tabelle nicht dreispaltig, sondern lediglich zwei Spalten. In der zweiten Spalte sollen die letzten beiden Werte untereinander stehen.

Wie kann ich das erreichen? Ich habe selten mit GUIs noch nie mit JTable gearbeitet. Bei Google habe ich bislang lediglich fertig erstellte Tabellen dieser Art gefunden, doch ohne erklaerung kann ich damit nicht gerade viel anfangen.

Ich wuerde mich freuen, wenn mir das jemand einfach kurz erklaeren koennte.

Ggf. lässt sich was mit https://docs.oracle.com/javase/7/docs/api/javax/swing/table/TableCellRenderer.html machen, oder man modifiziert die Daten, sodass die letzten beiden schon vorher zusammengefasst werden. Aber ein komplettes Beispiel möcht’ ich gerade nicht entwerfen, falls du also ein kleines Beispiel ohne viel durmrum entwirfst, schau ich mal drüber.

Ja, ein eigener Cell Renderer wäre da der übliche Ansatz. GROB sowas wie

static class DoubleRowRenderer extends DefaultTableCellRenderer {

    public void setValue(Object value) {

        StringBuilder sb = new StringBuilder();
        sb.append("<html>");

        YourClass c = (YourClass)value;
        sb.append(createStringForFirstRow(c));
        sb.append("<br />");
        sb.append(createStringForSecondRow(c));

        sb.append("</html>");
        setText(sb.toString());
    }
}

sollte es schon tun.

Du brauchst einen passenden Renderer, der das gewünschte Verhalten abbildet. In Frage kommen da bspw. eine JTextArea oder auch eine JList. Beide Komponenten ermöglichen die Ausgabe von Datenelementen untereinander.
Die einfachste Variante wäre, die Zeilen in HTML-Tags zu stecken und per
umzubrechen.

Edit: so wie das von Marco13 gezeigt wurde…

Vielen Dank.