Ah ok..grazie mille per avermi

public class RubricaModel extends AbstractTableModel{

private ArrayList<Scheda> schede;

public RubricaModel() {
schede=new ArrayList<Scheda>();
}

public void addScheda(String name,String surname,String telephone,String email) throws Exception{ //aggiunge una scheda in coda
Scheda s=new Scheda(name,surname,telephone,email);

schede.add(s);
fireTableRowsInserted(schede.size()-1,schede.size()-1); //notifica tutti i listener che la tabella ha subito delle modifiche e che è stata inserita la riga nel range(x,y)
}

public void addSchedaAt(String name,String surname,String telephone,String email, int i) throws Exception{ //aggiunge una scheda in una determinata posizione
Scheda s=new Scheda(name,surname,telephone,email);

schede.add(i, s);
fireTableRowsInserted(i, i);
}

public void setSchedaAt(String name,String surname,String telephone,String email,int i) throws Exception{
Scheda s=new Scheda(name,surname,telephone,email);
schede.add(i, s);
fireTableRowsUpdated(i,i);
}

public Scheda removeSchedaAt(int i){
Scheda sch=schede.remove(i);
fireTableRowsDeleted(i,i);
return sch;


}

public void save(String name, String surname, String telephone, String email) throws IOException{

Scheda s;
PrintWriter pw;
Iterator<Scheda> it=schede.iterator();

pw = new PrintWriter(new FileWriter("rubrica.txt"));

while(it.hasNext()){
s = it.next();
if(s.getEmail().equalsIgnoreCase("") || s.getEmail().equalsIgnoreCase("(opzionale)")){
pw.println(s.getName() + "," + s.getSurname() + "," + s.getTelephone());}
else {
pw.println(s.getName() + "," + s.getSurname() + "," + s.getTelephone() + "," + s.getEmail());
}
}
pw.close();

}

public void aggiornaScheda(String name, String surname, String telephone, String email, int current){

schede.get(current).setName(name);
schede.get(current).setSurname(surname);
schede.get(current).setTelephone(telephone);
schede.get(current).setEmail(email);

}

public ArrayList<Scheda> getSchede() {
return schede;
}

@Override
public int getColumnCount() {
return 4;
}

@Override
public int getRowCount() {
return schede.size();
}

@Override
public Object getValueAt(int r, int c) {
String field=null;
Scheda s=schede.get(r);

if(s!=null){
switch(c){
case 0:
field=s.getName();
break;
case 1:
field=s.getSurname();
break;
case 2:
field=s.getTelephone();
break;
case 3:
field=s.getEmail();
break;
default:
break;
}
}
return field;
}



public String getName(int i){
return (String)getValueAt(i,0);
}

public String getSurname(int i){
return (String)getValueAt(i,1);
}

public String getTelephone(int i){
return (String)getValueAt(i,2);
}

public String getEmail(int i){
return (String)getValueAt(i,3);
}

public String getColumnName(int c){
return Scheda.intestazione[c];
}



}