Hallo!
Ich bräuchte Hilfe bei meinem Programm, wie schon im Titel steht will ich meinem DefaultTableModel eine ArrayList<User> als Datenquelle zur Verfügung stellen. Arraylist deswegen, um User zu löschen bzw. hinzuzufügen...
Ich habe in google nicht wirklich viel Brauchbares für dieses Thema gefunden und wollte mich nun mal hier melden
Dafür ist das DefaultTableModel nicht da. Das DefaultTableModel verwaltet seine Daten intern selbst (ich glaub' mit einem oder mehreren Vectors). Wenn du eine ArrayList verwenden willst, mach' dir ein
Java:
classListTableModelimplementsTableModel// ggf. extends AbstractTableModel{privateList<User> list;// Hier ein Haufen Methoden :D}
Hallo!
Danke erstmals für die schnelle Antwort, jedoch wollte ich das schreiben einer eigenen TableKlasse vermeiden da ich darin noch zu unerfahren bin. Gibt es keine andere Möglichkeit?
Wenn man von AbstractTableModel erbt, sollte das nicht so aufwändig sein - ungetestet und grob wäre das dann
Java:
classListTableModelextendsAbtractTableModelimplementsTableModel{privateList<User> list;publicListTableModel(List<User> list){this.list = list;}@OverridepublicintgetRowCount(){return list.size();}@OverridepublicintgetColumnCount(){return// das musst du wissen...}@OverridepublicObjectgetValueAt(int row,int column){User user = list.get(row);switch(column){case0:return user.getName();case1:return user.getWhatever();...}returnnull;}}
Wenn man noch ausgefeiltere Funktionen haben will, besonders Editierbarkeit von User-Eigenschaften über die JTable, kann das etwas komplizierter werden - aber das wäre beim DefaultTableModel ähnlich.
Beachte aber, dass Änderungen an der Liste nicht automatisch in der JTable erscheinen. Um die Änderungen "transparent" zu machen, würde es sich anbieten, sowas ähnliches zu machen wie
Hallo!
Danke auch für deine Rückmeldung. Anscheinend gibt es um dieses Problem keinen anderen Weg außer ein eigenes Model zu schreiben. Na dann, aufgehts
Hab den Code mal angepasst:
Der Grundsätzliche aufbau ist: Exuser (int id, String user, String pwd) und eine Arraylist von Exusern will ich eben in einer JTable anzeigen die als Spalten die 3 Elemente des Exusers besitzt. Zeilen/Spalten sollen nicht editierbar sein. Eigentlich brauche ich nur eine ausgewählte Zeile löschen und eine neue hinzufügen können.