Ciao a tutti,
ho un piccolo problema relativo ad una programma che gestisce una rubrica telefonica mediante un'interfaccia grafica. Ho svolto tutte le funzionalità (Bottone Apri: permette all'utente di scegliere un file, Bottone Salva sovrascrive le modifiche effettuate, Bottoni Avanti - Indietro scorrono la rubrica, Bottone Nuovo crea un nuovo contatto in coda, e Bottone Delete elimina un contatto esistente.
Il mio problema è proprio nella funzionalità del Bottone Elimina in quanto mi cancella il contatto sucessivo rispetto a quello che voglio eliminare e non sono riuscito a trovare una soluzione. Vi posto le parti di codice interessate:
codice:deleteAct=new AbstractAction("Delete"){ @Override public void actionPerformed(ActionEvent e) { int rowToDelete=(rv.getTab().getSelectedRow()); System.out.println("rowToDelete"+rowToDelete); rm.removeSchedaAt(rv.getTfName().getText(), rv.getTfSurname().getText(), rv.getTfTelephone().getText(), rv.getTfEmail().getText(),(rowToDelete+1)); rv.getLabError().setText("Contact deleted"); } };
codice:public class RubricaModel extends AbstractTableModel{ private ArrayList<Scheda> schede; public RubricaModel() { schede=new ArrayList<Scheda>(); } public void removeSchedaAt(String name,String surname,String telephone,String email, int i){ schede.remove(i); fireTableRowsDeleted(i,i); } 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; }

Rispondi quotando