Quote Originariamente inviata da tonino1 Visualizza il messaggio
A questo punto vi sarei grato se mi diceste se ho impostato bene tutto il programma
No, il programma non è affatto impostato bene. Fidati, non sono io ad essere rompiscatole, se qualcuno ti dicesse che quanto postato va bene ti starebbe solo prendendo in giro.

Come dicevo nei post precedenti non ha senso provare ad aprire finestre dentro ad altre finestre, non devi assolutamente farlo.
Ora hai aggiunto la classe Contatto, ma l'hai scritta malissimo.

Una classe deve fare solo ed esclusivamente quello che ha senso che faccia, un Contatto nel tuo contesto è un insieme di informazioni relative a una persona, non deve nel modo più assoluto avere una variabile FinestraAggiungiContatto e andare a leggere le informazioni contenute nei suoi textField.
Anche il fatto che abbia un'ArrayList di stringhe non ha senso, perché nel tuo caso un Contatto ha 4 informazioni da memorizzare: nome,cognome,email e telefono, per cui userai 4 stringhe.
Se ne aggiungerai altre creerai altre variabili di tipo String, non usare qui un'ArrayList, ti complichi solo la vita.

Ecco come dovresti scrivere la classe Contatto:

codice:
class Contatto
{
	private String nome,cognome,email,telefono;
	public Contatto(String nome,String cognome,String telefono,String email)
	{
		this.nome = nome;
		this.cognome = cognome;
		this.telefono = telefono;
		this.email = email;
	}
	// Metodi per prendere le informazioni di ogni contatto
	public String getCognome(){
		return cognome;
	}
	public String getEmail(){
		return email;
	}
	public String getNome(){
		return nome;
	}
	public String getTelefono(){
		return telefono;
	}
	// Metodi per modificare le informazioni di ogni contatto
	public void setCognome(String nuovoCognome){
		cognome = nuovoCognome;
	}
	public void setEmail(String nuovaEmail){
		email = nuovaEmail;
	}
	public void setNome(String nuovoNome){
		nome = nuovoNome;
	}
	public void setTelefono(String nuovoTelefono){
		telefono = nuovoTelefono;
	}
}
Come dicevo Contatto ha solo le informazioni che deve contenere, più i metodi per restituire le informazioni (questa pratica è molto migliore del fatto di accedere direttamente ai campi di una classe, quindi se vuoi conoscere il nome di un Contatto c, farai c.getNome() e non c.nome) e per modificarle (vale quanto detto per il metodo get, non scriverai c.email = "pippo@.." ma farai c.setEmail("pippo@...")).

Un Contatto non deve avere nessuna informazione riguardo a finestre o altro, credimi, se questo non ti è chiaro non ha senso andare avanti.

Come dicevo nel precedente post, creati ora una lista di contatti, va benissimo un' ArrayList.
Quando inserisci un contatto, non fai altro che prendere le informazioni inserite, e poi aggiungi il nuovo contatto alla lista, tipo così:

codice:
listaContatti.add(new Contatto(nome,cognome,telefono,email));
dove nome,cognome,etc sono le informazioni inserite nei textField.

Quando vuoi visualizzare un contatto devi reperire un elemento dalla lista di contatti, questa parte è più difficile, perché dovresti caricare in un frame la lista di tutti i contatti, e poi scegliere il contatto da visualizzare.
Per ora puoi saltare questa parte, e nel frame VisualizzaContatto mostri in automatico il primo elemento della lista (controllando che non sia null, altrimenti riceverai sempre NullPointerException in esecuzione).

Per ora applica queste modifiche, ma c'è ancora molto lavoro da fare ....