Allora questa è una parte di un client del server pop3. Ho un array di messaggi mess[] visualizzati in una jList.Ci sono tanti bottoni (apri,rispondi,nuovo....) tra i quali anche "cancella" per cancellare il messaggio(dal server e dalla jList) il metodo che chiama il bottone è:

codice:
 
Message mess[]; //è ricevuto dal server
Jlist arrivi;

private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {
//Cancellare mail selezionata
  try{
   mess[arrivi.getSelectedIndex()].setFlag(Flags.Flag.DELETED, true);
   DefaultListModel m = (DefaultListModel) arrivi.getModel();
   int index = arrivi.getSelectedIndex();
   m.removeElementAt(index);
   status.setText("Numero di Mail presenti:" +m.getSize());
   }
 catch(Exception e){....}
}
Allora dopo aver cancellato, il numero di mail presenti si aggiorna in modo giusto; quando seleziono un'altra mail dalla jList e clikko "apri" in realtà avviene questo:
-Se la mail selezionata si trova prima di quella cancellata allora si apre tutto ok
-Se invece si trovava dopo viene aperta la mail sbagliata,in particolare quella precedente,
-Se la mail che voglio aprire è quella che prima stava dopo quella cancellata (ma che ora ha preso il suo posto) mi si apre quella cancellata!!

Il metodo chiamato dal bottone "apri" è:

codice:
MailReader è JFrame per lettura messaggi.

private void jButton4ActionPerformed(java.awt.event.ActionEvent evt) {
// E'stata selezionata una e-mail bisogna visualizzarne il contenuto
  int selected = arrivi.getSelectedIndex();                          
  MailReader leggi = new MailReader(mess[selected]); 
  leggi.show();
    }
Boh? Ti pare che uno che sta scrivendo un programma client per la ricezione di e-mail si deve bloccare davanti ad una stupida jList!



Grazie