Swing JTable, wie erreiche ich folgende Darstellung?

martin1989

Aktives Mitglied
Hallo!

Ich würde gerne eine JTable so aufbauen:Unbenannt.JPG


Habe die notwendigen Daten jeweils in Objekten gespeichert. Jedes Objekt hat Attribute und auch Listen, wo mehrere Strings drinnen sind. Kann ich das angehänhte Design einfach erstellten oder geht dies nur sehr umständlich?


Hab mir schon mal das DefaultTablemodel und auch die Erstellung eines eigenen TableModels angesehen.
Welche vorgehensweise würdet ihr mir hierfür empfehlen?

Wäre über Tipps und Anregungen sehr froh!
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    20 KB · Aufrufe: 35
Zuletzt bearbeitet:
danke für die antwort!

das sieht mir dann doch zu kompliziert aus.

Habe es jetzt mal versucht und die liste wird mir so ausgegeben:

Anhang anzeigen 7561

mir würde es ja schon genügen wenn er einfach nach jedem listenelement einen zeilenumbruch macht.

Weiß jmd wie das geht?

Im Inet fand ich nur mehr oder weniger komplizierte Wege über irgendwelche renderer oder so ...

Danke!
 
Ich hab mir jetzt so einen renderer angeschaut und mal folgenden erstellt:

Java:
public class Renderer extends JTextArea implements TableCellRenderer {
  public Component getTableCellRendererComponent (JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column )  {
    this.setWrapStyleWord(true);
    this.setLineWrap(true);
    this.setText((String)value);
    this.setBackground(Color.LIGHT_GRAY);
    table.setRowHeight(40);
    return this;
  }
}

nun ist es so eingestellt, dass wenn die spalte zu eng ist, er einen automatischen zeilenumbruch bei leerzeichen macht.
Ich will aber eben eine Liste in eine zelle einfügen und er soll mir nach jedem element einen zeilenumbruch machen.

Hat jmd einen Tipp für mich wie ich das mache?


Auch das automa. anpassen der Zeilenhöhe konnte ich nicht einbauen. Jetzt habe ich sie mal statisch auf 40 gsetzt.

Weiß das jmd?



Blöde frage, wer steht hinter dem "This" in dem fall? Es ist ja anscheinend nicht die "table"? Ich hab aus der sun docu das diese methode immer automatisch aufgerufen wird von java selber wenn es eine zeile erstellt...
 
Zuletzt bearbeitet von einem Moderator:
Du kannst doch einfach im Model die Daten aus der Liste in einen String mit Umbrüchen wandeln. Das dürfte das einfachste sein.
 
acchh vielen Dank stimmt 🙂 manchmal ist es so einfach 🙂

weisst du auch noch was bezüglich der autom. anpassung der zeilenhöhe?

P.S. durch meinen renderer kann ich die zellen jetzt nicht mehr anklicken bzw. markieren, ist das normal?


Vielen Dank!
 
Mit einem so einfachen Renderer bekommst du das mit der dynamischen Zeilenhöhe nicht hin. Da musst du schon tiefer in die Trackkiste greifen.

Schau Dir das mal an

JTable multiline cell renderer

und nein das ist nicht normal das man die Zellen dann nicht mehr anklicken kann.

Gruß

Claus
 
vielen Dank dieser multiline renderer funktioniert!

Nur habe ich jetzt folgendes Problem:

Ich will in einer spalte (bzw. in einer zelle) immer den inhalt aus einer list bzw. map ausgeben.
Der Inhalt der Map bzw. List sind Sätze. Ich will das er mir nach jedem Satz, also nach jedem Listenelement bzw. Mapelement den nächsten Eintrag in eine neue Zeile darunter schreibt (in der selben Zelle).

Hast da du auch einen Tipp für mich 🙂 ?

Danke!
 
Zur jetzigen zeit schaut es so aus: Anhang anzeigen 7566

die liste wird mir einfach so ausgegeben:

[Satz1, Satz2, Satz3 ....]

Ich will das wenn sie leer ist, nichts dasteht, auch das nicht "[]",
und sonst sollte er mit nach jedem "," einen Zeilenumbruch machen.

Habe nun im CellRednerer es geschafft die [] raus zu filtern!

dazu habe ich einfach den text untersucht und geschaut ob "[]" drinnen ist, und falls ja einfach "" ausgeben lassen für diese zelle.

Nun bräuchte ich noch den Befehl das er mir bei jedem "," einen Zeilenumbruch macht?

Bis jetzt macht er mir nur einen zeilenumbruch wenn der Platz zu eng wird und dann bei einem "Leerzeichen" 🙂
 
Zuletzt bearbeitet:

Zurück
Oben