# Neue Zeile JTable



## LENDER (12. Jan 2010)

Hallo,

wie kann ich einer JTable eine neue "Row" geben?! Mit Position?!

z.b. ist eine zelle der Tabelle makiert und dort drunter soll die neue zeile geben. 

Habs versucht kläglich gescheitert bin eben noch anfänger


----------



## Michael... (12. Jan 2010)

Daten werden nicht direkt in die Tabelle eingeben, sondern über deren Model
Welches TableModel verwendest Du denn?
Das DefaultTableModel besitzt die Methode DefaultTableModel#insertRow(int, java.lang.Object[]) um neue Zeilen an beliebiger Postion einzufügen.


----------



## lender (12. Jan 2010)

genau das modul perfekt danke jezze schau ich nur noch wo die makierung ist und dann füg ich es eins drunter ein


----------



## lender (12. Jan 2010)

kannst du mir ein beispiel schreiben wie ich das benutze bei mir sagt er immer nen fehler 

tabelledermacht.insertRow(3, daten);

daten is ein Object[][], aber eig kann ich das doch weg lassen oder?!


----------



## sebble (12. Jan 2010)

welchen Fehler gibt er denn? wäre sicherlich hilfreich das zu wissen. zusätzlich könntest du mal betroffenen code poste.


----------



## Michael... (12. Jan 2010)

lender hat gesagt.:


> daten is ein Object[][]


Die Methode erwartet aber ein Object[] - schließliche übergibts Du ja nur eine Zeile


----------



## lender (12. Jan 2010)

cannot find symbol


```
jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {"", null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }


void einfuegenzeile(){
    Object[][] daten = new Object[jTable1.getRowCount()][jTable1.getColumnCount()];
    datenTabelle(daten);
    jTable1.insertRow(4,daten);
```


----------



## lender (12. Jan 2010)

also mache das ganze mit netbeans und die table hab ich nur bei netbeans zusammen geschoben mir, deswegen kann ich keine daten ändern weil netbeans den bereich schützt aber der table ist doch ein model zugewiesen oder?!


----------



## Michael... (12. Jan 2010)

lender hat gesagt.:


> deswegen kann ich keine daten ändern weil netbeans den bereich schützt


Interessant - wieder ein weiteres Argument gegen GUI - Builder ;-)

Aber wie gesagt Du braucht ein Object[] und nicht ein Object[][]

```
Object[] daten = new Object[] {"Dies", "ist", "ein", "Test"};
tableModel.insertRow(4, daten);
```


----------



## lender (12. Jan 2010)

dieses tablemodel stört mich grad da bleib ich grad hängen. 

[Java]

 jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {"asfas", null, null, null},
                {"", null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.setColumnSelectionAllowed(true);
        jScrollPane1.setViewportView(jTable1);
        jTable1.getColumnModel().getSelectionModel().setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridheight = 15;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 500.0;
        gridBagConstraints.weighty = 500.0;
        gridBagConstraints.insets = new java.awt.Insets(0, 0, 0, 5);
        jPanel1.add(jScrollPane1, gridBagConstraints);


[/Java]

So sieht mein Code aus wo JTable inizialisiert wird. Hier steht doch mein Tabelmodel oder?

 jTable1.setModel(new javax.swing.table.DefaultTableModel( ?!


----------



## Michael... (12. Jan 2010)

Ja aber Du speicherst Dir nirgends eine Referenz aufs Model:

```
DefaultTableModel tableModel;
jTable1.setModel(tableModel = new javax.swing.table.DefaultTableModel(
...
```


----------



## Michael... (12. Jan 2010)

Oder Du holst Dir zu einem späteren Zeitpunkt das Model aus der Table und castest es auf DefaultTableModel. In einer Zeile zusammengefasst sähe das in etwa so aus:

```
((DefaultTableModel) jTable1.getModel()).insertRow(4, daten);
```


----------



## lender (12. Jan 2010)

danke erstmal

aber wieso darf ich nur ein Object [] und kein Object[][] array?!

Gibt es keine möglichkeit ein Object[][] zunehmen?


----------



## Michael... (12. Jan 2010)

Das wäre ja ein insertRow*s* oder insertData ;-) Es handelt sich ja hierbei um mehrere Zeilen.

Ein Object[][] kann man ganz einfach über eine Schleife und insertRow einfügen.


----------

