Axel Richter: HashMap verliert plötzlich alle Werte?

Beitrag lesen

Hallo,

import java.util.HashMap;
import javax.swing.table.DefaultTableModel;

public class TelefonTableModel extends DefaultTableModel  {

@Override
public void setValueAt(Object aValue, int row, int column)  {
  super.setValueAt(aValue, row, column);
}

public void fillTableModelWithData(HashMap<String, String> data)   {
  for (String element : data.keySet())   {
      System.out.println("Im Tablemodel: " + element + "," + data.get(element));
  }

int i = 0;
  for (String element : data.keySet())   {
      super.setValueAt(element, i, 0);
      super.setValueAt(data.get(element), i, 1);
      i++;
     }
  for (String element : data.keySet())   {
       System.out.println("Im Tablemodel nach for: " + element + "," + data.get(element));
  }

fireTableDataChanged();
    }
}

zusätzlich zu Biesterfelds Anmerkungen:  
  
Was hast Du hier vor? Bist Du sicher, dass Du [das Prinzip TableModel](http://java.sun.com/docs/books/tutorial/uiswing/components/table.html#data) verstanden hast?  
  
Du benötigst hier keine fillTableModelWithData-Methode. Du kannst ein DefaultTableModel per Constructor mit Daten füllen oder Du gibst durch Überschreiben der Methoden  
public String getColumnName(int col)  
und  
public Object getValueAt(int row, int col)  
vor, woher die Daten kommen sollen.  
  
Mit der Methode  
public void setValueAt(Object value, int row, int col)  
wird dafür gesorgt, dass geänderte Zelldaten aus dem View in den Datenspeicher geschrieben werden können. Sie wird automatisch aufgerufen, wenn sich ein Zellinhalt im View ändert.  
  
viele Grüße  
  
Axel