# JTable Löschen [Alle Zeilen aufeinmal Löschen]



## Fastkiller (14. Februar 2008)

Hallo erstmal =)

Ich hab gerade total n Brett vorm Kopf.. 

Wenn ich auf einen Button drücke will ich das alle Zeilen der Tabelle gelöscht werden. Mein Lösungsversuch:


```
int i1 = jTable2.getRowCount();
    for(int i=0;i<jTable2.getRowCount();i++)
{
    		
                System.out.println("I: "+i);
    	tblDataModel2.removeRow(i);
}
```

Allerdings funktioniert das nicht richtig.. Er löscht zwar ein paar Zeilen aber nicht alle.. 
Angenommen ich hab 4 Zeilen in der Tabelle. wenn ich auf den Button drücke löscht er alle Zeilen bis auf 2... 

Hab ich mehrere Zeilen als 4 in meiner Tabelle so werden auch weniger Zeilen gelöscht..

Bin für jede Hilfe Dankbar =)


----------



## SONY2 (14. Februar 2008)

In der Schleifenabfrage liest du mit getRowCount die Zeilenanzahl aus ... die wird aber bei jedem Durchlauf dekrementiert und somit wird deine Schleife zu früh abgebrochen... d.h. speichere die Zeilenanzahl vorher in einer Variablen und teste dann auf diese Variable


----------



## Fastkiller (14. Februar 2008)

Erstmal danke für deine hilfe =)

Allerdings funktionierts noch immer nicht...


int i1 = jTable2.getRowCount();


```
for(int i=0;i<i1;i++)
{
    		
    	System.out.println("I: "+i);
    	tblDataModel2.removeRow(i);

}
```

Er löscht immer noch nicht alle Zeilen..
Ausgabe in der Console:



> jButton12.actionPerformed, event=java.awt.event.ActionEvent[..]
> 6
> I: 0
> I: 1
> ...



PS: auch wenn ich am ende der schleife ein i1-- Mache funktionierts nicht  

hmpf so einfach und doch so schwer


----------



## MeinerEiner_80 (14. Februar 2008)

Moin!
Angenommen, du hast 4 Zeilen in der Tabelle. 
Dann sagst du in deiner Schleife, 
lösche Zeile 1 : nun noch 3 Zeilen übrig
lösche Zeile 2 : nun noch 2 Zeilen übrig
lösche Zeile 3 : naa.. das wird nicht funktionieren...

Dem kannst du zum Beispiel entgegenwirken in dem du zuerst Zeile 4 löschst, dann Zeile 3...etc etc...

*grüssle*
MeinerEiner


----------



## Fastkiller (14. Februar 2008)

Ahh super danke schön jetzt Funktionierts!

Lösung:


```
for(int i=jTable2.getRowCount()-1;i>=0;i--) 
{ 
    	          
    	System.out.println("I: "+i); 
    	tblDataModel2.removeRow(i); 
}
```


----------



## Looky (14. Februar 2008)

oder einfach so

[TableModel].setRowCount(0);

Gruß
Christian


----------



## MeinerEiner_80 (14. Februar 2008)

Looky hat gesagt.:


> oder einfach so
> 
> [TableModel].setRowCount(0);
> 
> ...


Was natürlich nur funktioniert(nur existiert), wenn er auch ein TableModel nutzt, welches von DefaultTableModel abgeleitet ist 
Aber hast du natürlich recht.. Ist viel simpler so..

*grüssle*
MeinerEiner


----------

