Jtable mit einer Liste befüllen

DerBuhl

Neues Mitglied
Hallo,

ich bin ein absoluter Einsteiger in Sachen Programmierung/Java. Daher habe ich jetzt Fragen zur JTable und List.

Ich habe eine List, die mal immerwieder unteschiedlich viele Objekte beinhaltet. Die Objekte in der Liste würde ich jetzt gerne in einer JTable ausgeben. Wie mache ich das am besten? Bisher habe ich es nur hinbekommen, einzelne Objekte anhand Ihrer Position in der Liste ausgeben zu lassen.

Ich habe diese Liste gemacht:
Java:
List<String> nam_list = new ArrayList<String>();

Und so lese ich die Objekte aus der Liste aus für die Tabelle (rowData sind die Daten die nachher in der Tabelle stehen):
Java:
String[][] rowData = {
        
    { nam_list.get(0), nam_list.get(1), nam_list.get(2), nam_list.get(3), nam_list.get(4) },
    {  nam_list.get(5), nam_list.get(6), nam_list.get(7), nam_list.get(8), nam_list.get(9) }};
In diesem Fall werden mir also leider nur 10 Objekte aus der Liste ausgegeben

Wenn ich aber die Liste über ein System.out.println ausgebe bekomme ich alle Objekte angezeigt. Also so:
Java:
System.out.println(nam_list);

Es muss doch auch irgendeine Möglichkeit geben, mit der ich den gesamten Listen Inhalt in die Variable rowData schreiben kann oder?

Wäre echt nett wenn ihr mir irgendwie weiterhelfen könntet. Denn durch googlen bin ich bisher zu keinem brauchbaren Ergebnis gekommen.
 
Wenn ich es richtig verstehe soll der Inhalt einer List in ein fünfspaltiges Model einer Tabelle überführt werden und zwar so, dass die Reihen von links nach rechts aufgefüllt werden.
Das ginge mit zwei ineinander verschachtelten Schleifen. Eventuell einfacher als so ein Daten Array zu erzeugen wäre ein DefaultTableModel und dessen addRow Methode zu nutzen.
 
Schau dir mal die javadoc von JTable an. Wenn du dir die Konstruktoren ansiehst, siehst du, dass du einen JTable auch mit Hilfe 2er Listen (Vectoren) erstellen kannst, und du dir die Arrayumwandlung sparen kannst.

Im Allgemeinen kann man Collections, wie Listen, so durchlaufen:
Java:
List<String> l=new Vector<String>();
//Möglichkeit 1
for(String s:l)
{
System.out.println(s);
};

Möglichkeit 2
Iterator<String> it=l.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}

Möglichkeit 3
for(int i=0;i<l.size();i++)
{
System.out.println(l.get(i));
}

Wenn du unbedingt ein Array haben willst, ist es aber am einfachsten auf die toArray() Funktion zurückzugreifen.
 
Danke euch beiden für die raschen Antworten. Ja genau, ich habe eine fünfspaltige Tabelle, die von links nach rechts gefüllt werden soll.
Ich werde mir mal in der kommenden Woche eure Ratschläge zu Herzen nehmen und versuchen es umzusetzen. Falls ich dann nochmal auf Probleme stoße schreibe ich euch nochmal 🙂.
Danke nochmal
 

Neue Themen


Zurück
Oben