Ok, ich hab hier mal einen Teil aus einem Programm, das ich mal geschrieben habe:
Code:
dataModel = new AbstractTableModel() // anonyme Klasse
{ // dataModel ist von der Klasse AbstractTableModel
public int getColumnCount()
{
if(AdressenListe.isEmpty() == true) // AdressenListe ist ein 2D-Vector
return 0;
else
{
Vector tmp = (Vector)AdressenListe.firstElement();
return tmp.size();
}
}
public int getRowCount()
{
if(AdressenListe.isEmpty() == true)
return 0;
else
return AdressenListe.size();
}
public String getColumnName(int column)
{
if(AdressenListe.isEmpty() == true)
return null;
else
switch (column)
{
case 0 : return "ID";
case 1 : return "Name";
case 2 : return "Beruf";
default: return ""+column;
}
}
public Object getValueAt(int row, int column)
{
if (AdressenListe.isEmpty() == true)
return null;
Vector tmp = (Vector)AdressenListe.elementAt(row);
return tmp.elementAt(column);
}
public void setValueAt(Object aValue, int row, int column)
{
Vector tmp = new Vector(); //leerer Vector
tmp.add(getRowCount()+1+"");
tmp.add("");
tmp.add("");
if (column == -1) // Zeile löschen
{
AdressenListe.remove(row);
while(++row <= getRowCount())
{
tmp = (Vector)AdressenListe.elementAt(row-1);
tmp.setElementAt(row+"",0);
}
}
else if (row > getRowCount()) // Zeile anhängen
{
AdressenListe.addElement(tmp);
}
else if (row < getRowCount() && row != -1)
{
if (column != 0) // Zeile ändern
{
tmp.clear();
tmp = (Vector)AdressenListe.elementAt(row);
tmp.setElementAt(aValue,column);
}
else // Zeile hinzufügen
{
tmp.setElementAt(row+1+"",0);
AdressenListe.add(row,tmp);
while(++row < getRowCount())
{
tmp = (Vector)AdressenListe.elementAt(row);
tmp.setElementAt(row+1+"",0);
}
}
}
}
public boolean isCellEditable(int row,int column)
{
return column != 0;
}
};
dataModel.addTableModelListener(new TableModelListener()
{
public void tableChanged(TableModelEvent e)
{
speichern.setEnabled(true);
}
});
txtTable = new JTable(dataModel); // Datenmodel in Tabelle einfuegen
pane = new JScrollPane(txtTable); // Tabelle in JPanel einfuegen
Es werden hier drei Spalten beschrieben, wobei die 2. und 3. editierbar sind. Über ein Menü (nicht beschrieben) können Zeilen hinzugefügt bzw. entfernt werden.
Um Änderungen zu aktualisieren muss in einem ActionListener noch folgende Zeile stehen:
Code:
dataModel.fireTableDataChanged();
Das sollte Dir ein Stück weiter helfen.
Ansonsten habe ich noch zwei sehr nützliche Links:
http://www.galileocomputing.de/openbook/javainsel5/
http://www.javabuch.de/
Lesezeichen