# JTable dynamische erweitern



## chilipower (15. Dez 2011)

Hallo Forum-Leser,

ich möchte eine JTable dynamisch erweitern und habe auch schon verstanden, dass man zusätzlich ein DefaultTableModel anlegen muss. 


```
import javax.swing.*;
  import javax.swing.event.*;
  import javax.swing.table.*;
  import javax.swing.table.DefaultTableModel;

  private JTable jtZinsen = new JTable(5, 4);
  private DefaultTableModel jtZinsenModel = (DefaultTableModel) jtZinsen.getModel();

    for (i=1; i<=iLaufzeit; i++) {
      jtZinsen.setValueAt(Integer.toString(i),i-1,0);
      jtZinsen.setValueAt(df.format(fAnfang),i-1,1);
      fZinsen = fAnfang * fZinssatz;
      jtZinsen.setValueAt(df.format(fZinsen),i-1,2);
      fEnde = fAnfang + fZinsen;
      jtZinsen.setValueAt(df.format(fEnde),i-1,3);
      fAnfang = fEnde;
      jtZinsenModel.addRow(jtZinsen.getRowCount()+1);
//      jtZinsen.setModel(jtZinsenModel);
    }
```

Es kommt jedes Mal die Fehlermeldung:

Compiliere Zinsen.java mit Java-Compiler
Zinsen.java:129:20: cannot find symbol
symbol  : method addRow(int)
location: class javax.swing.table.DefaultTableModel
      jtZinsenModel.addRow(jtZinsen.getRowCount()+1);
                   ^
1 error

Das sieht doch ganz danach aus, dass eine Bibliothek nicht eingebunden ist? Aber welche? Oder liegt der Fehler an einer anderen Stelle?

VG Andrea


----------



## ARadauer (15. Dez 2011)

Das sind nur Aussschnitte oder? So sieht dein Code nicht wirlich aus oder?
Sonst würd ich mich echt nochmal mit den Grundlagen beschäftigen, bevor du da mit komplexeren Swing Dingen arbeitest...


----------



## SlaterB (15. Dez 2011)

ja, statt über Bibliotheken nachzudenken (welche sollten es sein, alles Standard-API) müsstest du eher Fehlermeldungen lesen können,
ein int-Wert passt überhaupt nicht zur addRow()-Methode, ganz wie die Fehlermeldung es sagt,
was addRow() ist, was man da übergeben sollte usw. kann in der Bedienungsanleitung zur Klasse nachgelesen werden
oder besser in einem allgemeinen Tutorial

> private JTable jtZinsen = new JTable(5, 4);
> private DefaultTableModel jtZinsenModel = (DefaultTableModel) jtZinsen.getModel();

wird zur Laufzeit übrigens auch Probleme machen, aber das muss man nicht wissen, hatte ich selber auch diverse Male,
nur bevor du fragst:
die erste Zeile erzeugt eine JTable mit einem internen festen Model, dies ist KEIN DefaultTableModel,
du musst dir selber ein DefaultTableModel-Objekt anlegen, da Zeilen und Spalten alles konfigurieren

Tipp für Suchmaschinen: java defaulttablemodel example
-> 
DefaultTableModel: addRow(Object[] rowData) : DefaultTableModeljavax.swing.tableJava by API
und tausende andere Seiten


----------

