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

Fastkiller

Mitglied
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:

Code:
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 =)
 
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
 
Erstmal danke für deine hilfe =)

Allerdings funktionierts noch immer nicht...


int i1 = jTable2.getRowCount();

Code:
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
I: 2
I: 3
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 3 >= 3

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

hmpf so einfach und doch so schwer :(
 
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
 
Ahh super danke schön jetzt Funktionierts!

Lösung:


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

[TableModel].setRowCount(0);

Gruß
Christian
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
 
Zuletzt bearbeitet von einem Moderator:
Zurück