Swing DefaultTableModel Problem

MR_UNIX

Bekanntes Mitglied
Hallo,

Ich habe ein Problem mit dem DefaultTableModel! Es geht um folgenden Code-Abschnitt:
Java:
public void actionPerformed(ActionEvent e)
{
	TableModel model = driver.getModel();
	DefaultTableModel def = (DefaultTableModel) model;
	def.addRow(new String[] { "Neuer", "Fahrer" });
}
Das ist mein Action-Listener für einen Menü-Eintrag. Wenn ich diesen nun aber anklicke, bekomme ich folgende Exception:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: javax.swing.JTable$1 cannot be cast to javax.swing.table.DefaultTableModel
....
....
Ich verstehe nur nicht, an welcher Stelle ich hier eine Table in ein Model caste??
Der Fehler liegt in dieser Zeile des obigen Codes:
Java:
DefaultTableModel def = (DefaultTableModel) model;
Bitte um schnelle Hilfe!

Danke!
 
Das [c]$1[/c] bei [c]javax.swing.JTable$1[/c] bedeutet, dass es da nicht um eine JTable geht, sondern um einen anonyme innere Klasse (namens "$1", wenn man so will) von JTable. D.h. in der JTable ist ein DefaultTableModel, sondern irgendein anderes. Erstelle deine Tabelle im zweifelsfall nicht mit
new JTable();
sondern mit
new JTable(new DefaultTableModel());
falls das möglich ist.
 
Die Tabellen bekommen bei mir direkt Daten mitgeschickt:
Java:
this.driver = new JTable(rows1, cols1);
 
Hmja, was ist, wie es ist, kann man entweder anitzipieren oder ändern :bahnhof: In diesem Fall: Ändere das Erstellen dieser Tabelle von
this.driver = new JTable(rows1, cols1);
zu
this.driver = new JTable(createModel(rows1, cols1));
mit einer passenden Implementierung einer "createModel"-Methode, ein DefaultTableModel liefert, das mit den übergebenen Daten gefüllt ist.
 
You made my day! Hab's jetzt etwas anders:
Java:
this.driver = new JTable(new DefaultTableModel(rows1, cols1));
Jetzt kann ich auch neue Zeilen einfügen! Danke!
 

Zurück
Oben