Swing DefaultTableModel setValueAt Methode

dbausnnd

Aktives Mitglied
Hi,

noch eine Frage zum DefaultTableModel.

Ich habe den DefaultEditor vom Date Objekt in der JTable geändert. Dieser zieht allerdings nicht im DefaultTableModel. Ich habe die setValueAt methode testweise überschrieben dabei ist mir Aufgefallen, das das Value Object der Date Zelle als String ankommt. Im DefaultTableModel ist der Bereich jedoch korrekt als Date hinterlegt.

Zusätzlich habe ich den DefaultTableCellRenderer.getTableCellREndererComponent überschrieben. Dort Formatiere ich das Datum des Date Values um (SimpleDateFormat.format) und setzes es mittels setText ein. Dabei kommt ein String heraus. Kann es daran liegen? Der Wert ist doch lediglich für die Anzeige oder nicht?

Vielen Dankf ür die HIlfe.

gruß

dbausnnd.
 
Zuletzt bearbeitet:
Ich habe die setValueAt methode testweise überschrieben dabei ist mir Aufgefallen, das das Value Object der Date Zelle als String ankommt. Im DefaultTableModel ist der Bereich jedoch korrekt als Date hinterlegt.
Von wo "als String ankommt"? Der in der setValueAt übergebene Parameter ist ein String? Dann wird von irgendjemandem (Editor?) ein String übergeben.
 
Update

An dem Renderer kann es nicht liegen. Hier kommt der Value Wert bereits als String an. Ich habe keine Ahnung warum immer String im Renderer und im setValueAt() vom DefaultTableModel ankommt.

Desweiteren kommen alle Werte als String an nicht nur die Datumswerte.

Einer eine Idee?
 
Ich weiß ja nicht wie das bei Dir ausschaut bzw. was Du als Editor verwendest. Der DefaultEditor ist ja ein JTextField und das kann nur einen String liefern.
 
Ich habe noch eine andere Implementierung in der ich ein eigenes TableModel verwende dort habe ich ebenfalls nicht den DefaultEditor überschrieben. hier kommen die Value als das Objekt, wie ich es erstellt habe.

Mir ist Aufgefallen, das bei DefaultTablemodel.setDataVector(Object[][], Object[]) und anschliessendem DefaultTableModel.getColumnClass(), imme rnur Object zurückkommt (Obwohl im Array die korrekten Objekttypen zugewiesen sind). Vermutlich liegt das hieran.

Gibt es eine Möglichkeit dem DefaultTableModel die korrekten Klassen für getColumnClass zu übergeben? oder muss ihc die Methode immer überschreiben?
 
Hast du die Methode getColumnClasss im TableModel richtig überschrieben?
Edit, das oben noch nicht gelesen:
Du musst dich leider selber darum kümmern die richtige Klasse bei getColumnClass zurückzugeben. Standarmäßig kommt da immer nur Object.
Java:
DefautlTableModel model=new DefautlTableModel()
{
@Override
public Class<?> getColumnClass(int index)
{
if(index==2)
{
return Date.class;
}
}
}
 
Zuletzt bearbeitet:
Ok ich habe die Methode getColumnClass vom DefaultTableModel nicht überschrieben. Ich dachte, das er das aufgrund dem Inhalt des Object Arrays selber ermittelt.

Besten Dank. Ich werde es heute Abend mal direkt ausprobieren.
 

Neue Themen


Zurück
Oben