T1m Geschrieben 3. Juli 2014 Geschrieben 3. Juli 2014 Guten Morgen, ich bin ein Programm am Schreiben, in dem unter andern eine Tabelle erstellt und angezeigt werden soll. Die Tabelle soll kein Meisterwerk werden, sondern ganz simple Daten aus einem 2D-Array anzeigen. Mein Problem ist es nun, dass wenn die Daten im 2D-Array geändert werden, die Datensätze sich in der JTable nicht ändern. Ich hänge jetzt seit ein paar Tagen an dem Problem fest und finde einfach keine Lösung. Hier ist mein Quellcode. import java.awt.BorderLayout; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import javax.swing.JFrame; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; public class BeispielTabelle extends JFrame { ResultSet rsTrefferliste; ResultSetMetaData rsmdTrefferliste; int zeilenAnzahl; int spaltenAnzahl; String[][] resultArray; String[] spaltenArray; DefaultTableModel dtm; JTable table = new JTable(); public BeispielTabelle() { setTable(); } public void setTable() { setTitle("BeispielTabelle"); setSize(500, 500); setLocationRelativeTo(null); setResizable(false); setVisible(false); } public void createTable() { dtm = new DefaultTableModel(resultArray, spaltenArray); table.setModel(dtm); add(new JScrollPane(table), BorderLayout.CENTER); } public void fillTrefferliste(ResultSet result) { rsTrefferliste = result; try { rsmdTrefferliste = rsTrefferliste.getMetaData(); // Spaltenanzahl spaltenAnzahl = rsmdTrefferliste.getColumnCount(); // Zeilenanzahl rsTrefferliste.last(); zeilenAnzahl = rsTrefferliste.getRow(); rsTrefferliste.beforeFirst(); resultArray = new String[zeilenAnzahl][spaltenAnzahl]; spaltenArray = new String[spaltenAnzahl]; while (rsTrefferliste.next()) { for (int i = 0; i < zeilenAnzahl; i++) { for (int j = 0; j < spaltenAnzahl; j++) { resultArray[i][j] = rsTrefferliste.getString(j + 1); } } for (int j = 0; j < spaltenAnzahl; j++) { spaltenArray[j] = rsmdTrefferliste.getColumnLabel(j + 1); } } } catch (SQLException e) { e.printStackTrace(); } } } Ich würde mich sehr über Hilfe freuen. Mit freundlichen Grüßen, T1m Zitieren
Gast KnapsackSolver Geschrieben 3. Juli 2014 Geschrieben 3. Juli 2014 Hallo T1m, wenn ich das richtig verstehe funktioniert eigentlich alles oder ? Das bedeutet, deine Daten werden bei erstmaligem Anzeigen auch in der Tabelle visualisiert. Ändert sich nachfolgend das Array, werden diese Änderungen nicht mehr aktualisiert ? Dann musst du einfach das ganze Neu zeichnen. Also das Table-Model referenziert ja bereits dann auf deine Daten. Werden nun Daten im Array gespeichert muss sich auch zwingen die Tabele neu generieren. Dazu musst du dann also lediglich das ganze neu zeichnen (Also Revalidate, Repaint oder so) Hoffe ich hab dein Problem richtig erfasst Zitieren
T1m Geschrieben 3. Juli 2014 Autor Geschrieben 3. Juli 2014 Guten Tag SakulRelda, ja du hast mein Problem richtig verstanden und du hast auch recht damit, dass ich nur mit der Repaint() -Funktion alles neu zeichnen muss. Ich habe anscheinend den Wald vor lauter Bäumen nicht mehr gesehen. Vielen Dank für deine Hilfe. Zitieren
Gast KnapsackSolver Geschrieben 3. Juli 2014 Geschrieben 3. Juli 2014 Na dann viel Spaß und weiter viel Erfolg Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.