Swing JTable Zeilen löschen

sebastianrg

Mitglied
Hi,

ich möchte gerne den Inhalt der JTable ganz löschen, bzw. einzelne Zeilen.
Derzeit mache ich es so:

Java:
Object[] obj = new Object[1];
		obj[0] = "";
		for(int z = 0; z < table.getRowCount()-1; z++){
			table.setValueAt(obj[0], z, 0);
		}

Dabei setze ich aber nur einen leeren Inhalt, was doch sehr unschön ist.
Würde gerne einfach den Inhalt komplett rauslöschen können.
Hoffe mir kann da jemand helfen ;)
 

Michael...

Top Contributor
daten manipuliert man am besten über das TableModel, standardmäßig verwendet JTable ein DefaultTableModel, welches über u.a. methoden zum einfügen und zum entfernen von datenreihen besitzt. siehe API Doku
 

sebastianrg

Mitglied
Okay dann müsste ich erst mal ein DefaultTableModel meiner Jtable zuweisen.
Schmeißt das dann irgendwas durcheinander?

Ich fülle das JTable bei der instantiierung über den Konstruktor mit einem Object[][] und einem String-Array der die Bezeichner für die Columns enthält.
 

sebastianrg

Mitglied
Wenn ich dann
Java:
TableModel model = table.getModel();
einfüge zeigt er mir bei model keine Methode removeRow an.
Und das geht auch nicht:
Java:
DefaultTableModel model = (DefaultTableModel) table.getModel();
Hier hätte ich ja dann die Methode removeRow.

sonst hätte ich ja gemacht table.getModel().removeRow(Variable);
 
Zuletzt bearbeitet:
G

Gast2

Gast
Und das geht auch nicht:
Java:
DefaultTableModel model = (DefaultTableModel) table.getModel();[code=Java]
Hier hätte ich ja dann die Methode removeRow.[/QUOTE]
Warum sollte das nicht gehen? Das TableModel dass du dort zurückbekommst ist standardmäßig ein DefaultTableModel, du kannst also problemlos casten. Dann kannst du auch die removeRow Methode aufrufen.
 

sebastianrg

Mitglied
Ich bekomme dann aber eine Exception:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel

Gemacht habe ich das:
Java:
DefaultTableModel model = (DefaultTableModel)table.getModel()
 

sebastianrg

Mitglied
Genau so, aber auch wenn ich table.getModel einklammere ist dem nicht geholfen.
Merkwürdig ist der Fehler, da ja offensichtlich von Table nach table.DefaultTableModel versucht gecastet zu werden.
 
G

Gast2

Gast
Java:
	public static void main(final String[] args) {
		JTable t = new JTable();
		DefaultTableModel dtm = (DefaultTableModel)t.getModel();
	}
Lässt sich der Code bei die kompilieren? Das läuft bei mir zumindest problemlos durch.
Die ClassCastException schreit schon fast nach falscher Klammerung, poste mal die Zeile in der der Fehler auftritt. Vielleicht noch 2 3 Zeilen vorher wenns dazu passt.
 

sebastianrg

Mitglied
Vorne weg.
Ich befinde mich in einer Klasse, in der ich von JFrame erbe.

Im Konstruktor wird ein Objekt von JTable erstellt.

Der Code von der Funktion in der Klasse:

Java:
	public void clearTable(){
		Object[] obj = new Object[1];
		obj[0] = "";

		DefaultTableModel model = (DefaultTableModel) table.getModel();
	
		
		for(int z = 0; z < table.getRowCount()-1; z++){
			table.setValueAt(obj[0], z, 0);
			//model.removeRow(z); Dann später ;)
		}
	
	}

Die gesamte Fehlermeldung sieht so aus:
Code:
Exception in thread "main" java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel
	at vornamen.VornameFrame.clearTable(VornameFrame.java:68)
	at vornamen.VornameFrame.setTableData(VornameFrame.java:55)
	at vornamen.Control.fillTable(Control.java:35)
	at vornamen.Vornamen.main(Vornamen.java:18)

Wenn ich die Zeile auskommentiere läuft die Main-Routine voll durch und alles geht wieder.
Dann habe ich noch meinen Stümpercode drin zum "löschen"

edit:
Ergänzend mal die erzeugung des JTable Objekts:
Java:
table = new JTable(control.getVornamenDataForTable(),control.getcolumnName());
Es wird der Konstruktor aufgerufen, wo ich ein Object[][] und einen String[] übergeben kann.

edit:
Möglicherweise könnte es an Eclipse liegen?
Muss ich vlt. throw CastException oder ein try-Catch-Block einbauen?
Ich hatte damit schon einmal Probleme.
 
Zuletzt bearbeitet:
G

Gast2

Gast
Lass dir bitte mal table.getModel() ausgeben.
Code:
System.out.println(table.getModel());
 

sebastianrg

Mitglied
javax.swing.JTable$1@1ba22e94

Mit anderen Worten ich habe kein DefaultTableModel?

edit:
Danke für den Tipp!

Java:
		table = new JTable(new DefaultTableModel(control.getVornamenDataForTable(),control.getcolumnName()));

Damit löse ich das Problem!
Danke vielmals!
 
G

Gast2

Gast
Hm, getModel() gibt tatsächlich eine JTable zurück wenn du die JTable mit nem Object[][] und String[] initialisierst. Schon etwas merkwürdig, weiß jemand vielleicht warum das so ist ???:L

Du kannst die JTable explizit mit nem DefaultTableModel initialisieren:
Java:
        Object[][] o = {{1,2,3}};;
        String[] header = {"1","2","3"};
        DefaultTableModel dtm = new DefaultTableModel(o, header);

    	JTable t = new JTable(dtm);

        DefaultTableModel dtm2 = (DefaultTableModel)t.getModel();
Dann klappts auch mit dem Cast.
 
Zuletzt bearbeitet von einem Moderator:

sebastianrg

Mitglied
Hast wohl direkt gepostet als ich es schon herausgefunden hatte.
Hab dann einfach genau das gemacht was du qausi gerade geschrieben hast ;)

Jetzt muss ich nur beim hinzufügen noch addRow einbauen, sonst zerhaut es mir da auch alles.
 
G

Gast2

Gast
Noch kurz zur Klärung meiner Frage oben:
Ruft man den Konstruktor
Code:
public JTable(final Object[][] rowData, final Object[] columnNames
auf, wird eine anonyme Klasse erstellt die auf dem AbstractTableModel aufbaut. In allen anderen Fällen wird ein DefaultTableModel erstellt, naja..
 

sebastianrg

Mitglied
Komisch warum es bei mir dann nicht da war.
Werd mir das nachher mal ansehen, aufjedenfall liefert getModel eine JTable zurück.

Eine andere Sache.
Ich kann jetzt Daten hinzufügen, doch gelöscht wird noch nichts.

Das ist der Code zum hinzufügen und löschen.
Bevor ich neue Daten hinzufüge lösche ich immer erst die ganze Table(was es noch nicht tut).
Ich will keine Daten in dem Sinne anhängen, sondern immer ersetzen.

Was ich jetzt aber habe ist das unten die neuen Daten hängen und wenn ich dann die Aktion mehrfach ausführe sind irgendwann alle Daten weg.(4-5Klicks)

Java:
	public void setTableData(){
		this.clearTable();
		
		DefaultTableModel model = (DefaultTableModel) table.getModel();
		
		for(int i = 0; i < control.getVornamenDataForTable().length-1;i++){
			model.addRow(control.getVornamenDataForTable()[i]);

		}
		table.setModel(model);
		
	}
	
	public void clearTable(){

		DefaultTableModel model = (DefaultTableModel) table.getModel();
		
		for(int z = 0; z < model.getRowCount()-1; z++){
			//table.setValueAt(obj[0], z, 0);
			model.removeRow(z);
		
		}
		table.setModel(model);
	
	}

InsertRow setzt zumindest die Elemente an die Stelle der ersten, so denkt man erst mal alles stimmt ;)
addRow ist dann aber korrekt, da ja dann keine Elemente mehr vorhanden sind, die an Stelle X ersetzt werden können.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bluedaishi JTable alle Zeilen löschen AWT, Swing, JavaFX & SWT 7
F Per KeyListener Zeilen aus JTable löschen AWT, Swing, JavaFX & SWT 9
J JTable - Wie Zeilen löschen ? AWT, Swing, JavaFX & SWT 8
M JTable. Beim löschen der Zeilen Fehlermeldung AWT, Swing, JavaFX & SWT 22
adiko01 JTable: Nur markierte Zeilen aus der Tabelle in CSV exportiern AWT, Swing, JavaFX & SWT 9
Viktim Swing JTable Mit Tab druch Zeilen Wechseln AWT, Swing, JavaFX & SWT 5
P Swing JTable mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 1
C JTable Drag and Drop von Zeilen innerhalb einer Table AWT, Swing, JavaFX & SWT 2
O Swing JTable - Zeilen färben (mit Model) AWT, Swing, JavaFX & SWT 13
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
M JTable Zeilen und Zellen einfärben AWT, Swing, JavaFX & SWT 11
M Selektierte Zeilen von JTable AWT, Swing, JavaFX & SWT 10
M JTable Zeilen einfärben AWT, Swing, JavaFX & SWT 13
J Swing JTable-Daten Speichern und bei zeilen-änderung beibehalten. AWT, Swing, JavaFX & SWT 6
B JTable Zeilen und Spalten selektieren AWT, Swing, JavaFX & SWT 5
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
GianaSisters Swing jTable - Feldtext soll mehrere Zeilen haben AWT, Swing, JavaFX & SWT 3
0 JTable leere Zeilen einfügen AWT, Swing, JavaFX & SWT 3
D JTable mit mehrzeiligen Zeilen AWT, Swing, JavaFX & SWT 5
kodela Swing selektierte Zeilen in JTable AWT, Swing, JavaFX & SWT 3
D Swing JTable: über sichtbare Zeilen iterieren AWT, Swing, JavaFX & SWT 2
U JTable: Zeilen abhängig vom Datensatz einfärben AWT, Swing, JavaFX & SWT 4
A JComboBox-Zeilen in JTable AWT, Swing, JavaFX & SWT 2
B JTable: Zeilen sortieren, aber bestimmte Zeilen fest lassen AWT, Swing, JavaFX & SWT 9
B Swing JTable: mehrere Zeilen markieren AWT, Swing, JavaFX & SWT 3
M JTable - mehrere Zeilen selektieren AWT, Swing, JavaFX & SWT 7
M JTable einzelne Zeilen färben AWT, Swing, JavaFX & SWT 2
A Swing JTable Zeilen einfügen verbieten AWT, Swing, JavaFX & SWT 3
elitebiber Swing Zeilen in einer JTable gruppieren AWT, Swing, JavaFX & SWT 3
O Zeilen in JTable auf Grund eines Wertes einfärben AWT, Swing, JavaFX & SWT 6
R Suchbare Zeilen von JTable in JScrollPane ermitteln AWT, Swing, JavaFX & SWT 9
O JTable Zeilen "nach oben" verschieben AWT, Swing, JavaFX & SWT 3
R Daten in JTable in mehreren Zeilen darstellen AWT, Swing, JavaFX & SWT 11
A Multiple Zeilen in einer JTable Zelle AWT, Swing, JavaFX & SWT 6
M JScrollbar + JTable + Zeilen wie in Excel hinzufügen AWT, Swing, JavaFX & SWT 14
S JTable zwei Text-Zeilen in einer Zelle AWT, Swing, JavaFX & SWT 2
Z JTable Zeilen nummerieren AWT, Swing, JavaFX & SWT 2
G JTable mit JTextAreaEditor - Probleme bei langen Zeilen AWT, Swing, JavaFX & SWT 4
S Welcher Listener ? In JTable mehrere Zeilen markieren & AWT, Swing, JavaFX & SWT 2
A Attribute von Objekten in JTable-Zeilen anzeigen AWT, Swing, JavaFX & SWT 2
E JTable; Zeilen der ersten Spalte definieren? AWT, Swing, JavaFX & SWT 4
A JTable, bestimmte Zeilen blau hinterlegen AWT, Swing, JavaFX & SWT 3
S JTable Makierungen über mehrere Zeilen nicht akzeptieren AWT, Swing, JavaFX & SWT 5
S JTable, mehrere Spalten/Zeilen zeitlich versetzt hinzufügen AWT, Swing, JavaFX & SWT 6
G JTable zur Laufzeit Spalten und Zeilen hinzufügen AWT, Swing, JavaFX & SWT 7
B JTable - Zeilen nachträglich hinzufügen? AWT, Swing, JavaFX & SWT 3
javasdann JTable sichtbare Zeilen innerhalb von JScrollPane ermitteln AWT, Swing, JavaFX & SWT 5
S Im JTable Zeilen ein-/ausblenden AWT, Swing, JavaFX & SWT 6
J Markierte Zeilen in einem JTable AWT, Swing, JavaFX & SWT 3
J JTable-Zeilen mit Werten füllen AWT, Swing, JavaFX & SWT 7
Student JTable - Zeilen und Spalten vertauschen AWT, Swing, JavaFX & SWT 4
W JTable: Zeilen nicht editierbar setzen AWT, Swing, JavaFX & SWT 6
L JTable -> Zeilen hinzufügen AWT, Swing, JavaFX & SWT 9
M JTable - unterschiedliche Hintergrundfarben von Zeilen AWT, Swing, JavaFX & SWT 2
S Zeilen einer JTable verstecken AWT, Swing, JavaFX & SWT 2
J Drag und drop aus einer JTable - bitte um Unterstützung AWT, Swing, JavaFX & SWT 2
S HPRO und UPRO gemeinsame JTABLE gemeinsamer RENDERER ? AWT, Swing, JavaFX & SWT 1
F Swing JTable - MultiHeader inkl. Eingabemöglichkeit AWT, Swing, JavaFX & SWT 1
S JTable - Feldinhalte anzeigen AWT, Swing, JavaFX & SWT 15
D Swing JTable Spaltenbreite AWT, Swing, JavaFX & SWT 1
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G jTable - getSelectedRow() AWT, Swing, JavaFX & SWT 3
I JTable mit einem Button zu einer Detail Seite springen AWT, Swing, JavaFX & SWT 4
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
D Tastaturabfragen CTRL+t, CTRL+E bei eine JTable, bestehend aus JTextAteas AWT, Swing, JavaFX & SWT 4
P Checkboxes in JTable nicht editable AWT, Swing, JavaFX & SWT 9
F Best-Practise: JTable Text in Zelle zu groß AWT, Swing, JavaFX & SWT 2
izoards JTable in CSV File schreiben... AWT, Swing, JavaFX & SWT 23
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
I JTable, DefaultTableModel, zwei Zahlen multiplizieren. AWT, Swing, JavaFX & SWT 26
M JTABLE / wie oft wurde gewürfelt. AWT, Swing, JavaFX & SWT 1
F JTable vergrößern AWT, Swing, JavaFX & SWT 2
H JTable: Diverse NullPointer-Exceptions zur Laufzeit AWT, Swing, JavaFX & SWT 3
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
T Swing JTable cellRenderer mit jpg Hintergrundfarbe lässt sich nicht ändern. AWT, Swing, JavaFX & SWT 1
HoT Einzelne Zelle in JTable Rahmen unten setzen AWT, Swing, JavaFX & SWT 24
B JTable Zellen zusammenfügen AWT, Swing, JavaFX & SWT 3
M Swing Cell Renderer für Zeilenumbruch in JTable AWT, Swing, JavaFX & SWT 0
H JTable im JSplitPane darstellen AWT, Swing, JavaFX & SWT 2
MadMax2506 Swing JTable lädt sehr lange AWT, Swing, JavaFX & SWT 1
D Zeilenumbruch in einer JTable AWT, Swing, JavaFX & SWT 9
R Swing JTable und Spaltenausrichtung AWT, Swing, JavaFX & SWT 8
G JTable füllen AWT, Swing, JavaFX & SWT 1
H JTable TableCellEditor-Problem AWT, Swing, JavaFX & SWT 0
W Swing JTable Zeilenumbruch innerhalb einer Zelle AWT, Swing, JavaFX & SWT 3
J Datensatz in jTable ausgeben AWT, Swing, JavaFX & SWT 3
M Swing Automatischer Editorstart in JTable-Zelle AWT, Swing, JavaFX & SWT 5
ralfb1105 Swing JTable aktualisieren AWT, Swing, JavaFX & SWT 5
M JTable.setDefaultRenderer(...) greift nicht AWT, Swing, JavaFX & SWT 0
J JTable: Eingabe in Tabellenzelle korrigieren AWT, Swing, JavaFX & SWT 4
T Problem mit JTable Sortierung AWT, Swing, JavaFX & SWT 2
D JTable nach INSERT aktualisieren /refreshen AWT, Swing, JavaFX & SWT 1
D MySQL Daten in JTable anzeigen AWT, Swing, JavaFX & SWT 2
H Swing Jtable extra spalte AWT, Swing, JavaFX & SWT 6
S Swing Rechteck über JTable zeichnen (per MouseListener) AWT, Swing, JavaFX & SWT 1
S Swing Mal wieder JTable Ansicht aktualisieren AWT, Swing, JavaFX & SWT 10
A JTable mit Daten füllen AWT, Swing, JavaFX & SWT 1
VfL_Freak Swing Einzelne Zeile in jTable selektieren klappt nicht AWT, Swing, JavaFX & SWT 7
N AWT jTable CellRenderer AWT, Swing, JavaFX & SWT 6
T Swing JTable valueChanged datensatz löschen AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Neue Themen


Oben