Visualizzazione dei risultati da 1 a 10 su 108

Discussione: Problema con JFrame

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da tonino1 Visualizza il messaggio
    Ciao. Niente da fare non mi riesce di istanziare un oggetto di una classe in un'altra classe. Ma si può fare?
    Certo che si può fare, sarebbe un po' difficile fare programmazione ad oggetti con una limitazione così restrittiva non credi ?

    Quote Originariamente inviata da tonino1 Visualizza il messaggio
    Di solito faccio così:
    FinestraAggiungiContatto nome=new FinestraAggiungiContatto();
    Poi cerco di popolare una lista in un frame chiamato FinestraVisualizzaContatto così:
    lista.add(nome.getText();.
    Ma mi dà sempre errore sull'istanza dell'oggetto della classe FinestraAggiungiContatto.
    Se per "mi dà errore" ti riferisci al fatto di ricevere sempre una NullPointerException in esecuzione, la risposta non può che essere una: stai nuovamente tentando di accedere a un oggetto/variabile che non è ancora stato istanziato.
    Questo nella stragrande maggioranza dei casi, ovviamente a meno che non sia tu a porre volontariamente una variabile a null (improbabile)...

    Senza avere il codice sottomano (l'avrai modificato immagino) è impossibile dire dove questo accade, ma ti basta guardare la riga che ti dà errore e controllare una ad una tutte le operazioni che fai, banalmente se stampi a video tutte le variabili della riga coinvolta e ricevi da qualche parte "null", hai già un'indicazione di quale sia a causare l'errore...

    Nelle due righe che hai postato ora poi, hai chiamato nome un frame di tipo FinestraAggiungiContatto, e poi sotto fai nome.getText(): quindi o hai sbagliato a scrivere il secondo nome, e volevi riferirti a uno dei tuoi textField, o devi avere definito nella classe FinestraAggiungiContatto un metodo getText() (non lo vedo molto sensato), o stai chiamando in parti diverse del codice due variabili con lo stesso nome, e questa è una pessima idea visto il casino in cui sei in mezzo

    Intanto se vuoi riposta il codice con le modifiche e ti dico dove sta il problema, ma ripensa a quello che ho scritto sopra: il design delle classi che stai creando non va affatto bene, e se continui a non volerlo "correggere" subito, farai sempre più fatica in futuro.

    Perché non hai ancora creato una classe Contatto? E' l'entità di base della tua rubrica, e ci fai sopra ogni operazione...
    Nel metodo Aggiungi che hai postato sopra (tra l'altro i nomi dei metodi per convenzione dovrebbero iniziare con la minuscola), inserisci le informazioni dei textfield in un ArrayList di stringhe e poi provi a scrivere la lista in un file, tra l'altro sovrascrivendolo ogni volta.

    Perché in quel punto non istanzi un nuovo contatto passando come parametri i dati inseriti, e non inserisci il nuovo contatto creato in una lista di Contatti ?
    Se poi la lista di Contatti la dichiari come variabile della classe Rubrica, sarà visibile a tutte le classi della tua applicazione, e non dovrai MAI avere bisogno di creare frame dentro altri frame e altre cose inutili ....
    Ultima modifica di Ansharja; 29-05-2016 a 08:46

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    Ho riscritto il codice ma ho ancora dei problemi.Lo posto per intero con tutto il ringraziamento per la pazienza di leggerlo:
    codice:
    import javax.swing.*;
    
    
    import java.awt.*;
    import java.awt.List;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.*;
    import java.io.*;
    import java.io.BufferedReader;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintStream;
    import java.util.*;
    import java.lang.*;
    
    
    
    
    public class Rubrica extends JFrame implements ActionListener {
        
        
        JButton VisualizzaContatto=new JButton("Visualizza Contatto");
        JButton AggiungiContatto=new JButton("Aggiungi Contatto");
        JButton ModificaContatto=new JButton("Modifica Contatto");
        JButton RimuoviContatto=new JButton("Rimuovi Contatto");
        JButton LeggidaFile=new JButton("Leggi da File");
        
        
        public Rubrica(){
            super("Rubrica");
            GridLayout p=new GridLayout(4,0);
            JPanel p1=new JPanel();
            p1.setLayout(p);
            add(p1); 
            p1.add(VisualizzaContatto);
            p1.add(AggiungiContatto);
            p1.add(ModificaContatto);
            p1.add(RimuoviContatto);
            p1.add(LeggidaFile);
            setSize(400,200);
            show();
            AggiungiContatto.addActionListener(this);
            ModificaContatto.addActionListener(this);
            RimuoviContatto.addActionListener(this);
            LeggidaFile.addActionListener(this);
            VisualizzaContatto.addActionListener(this);
            }
        
        public void actionPerformed(ActionEvent e){
            if (e.getSource()==VisualizzaContatto){
                
                new FinestraVisualizzaContatto();
            
            }    else if(e.getSource()==AggiungiContatto)
            {
                new FinestraAggiungiContatto();
                
                
            }  else if (e.getSource()==ModificaContatto)
            {
                new FinestraModificaContatto();
                
                
            }else if(e.getSource()==RimuoviContatto)
            {
                new FinestraRimuoviContatto();
            }else if(e.getSource()==LeggidaFile){
                
                    try
                    {
                        Runtime.getRuntime().exec("notepad Rubrica.txt");
                    }catch (Exception f) {
                            System.out.println ("Errore exec:" + f);
                    }
        }
    }
    
    
        public static void main(String[] args){
            new Rubrica();
            
                
             }
        
         class Contatto{
            private  FinestraAggiungiContatto a=new FinestraAggiungiContatto();
             ArrayList<String> lista=new ArrayList();
                String b= a.nomeb.getText();
                String c=a.cognomeb.getText();
                String d=a.telb.getText();
                String e=a.emailb.getText();
                String f;
                
                public void Contatto(){
                lista.add(b);
                lista.add(c);
                lista.add(d);
                lista.add(e);
                 f=(String) lista.set(0,b); 
                    
                System.out.println(f);
               
                 }
                
            }
        
        
        public class FinestraVisualizzaContatto extends JFrame {
             Contatto a=new Contatto();
            
            public     FinestraVisualizzaContatto(){
                
                List ricerca=new List();
                
                JLabel nome1=new JLabel("Nome:   ");            
                JLabel nomea=new JLabel();
                JLabel cognome1=new JLabel("Cognome:   ");
                JLabel cognomea=new JLabel();
                JLabel tel1=new JLabel("Telefono:   ");
                JLabel tela=new JLabel();
                JLabel email1=new JLabel("E-mail:   ");
                JLabel emaila=new JLabel();
                
                 GridLayout p=new GridLayout(5,2);
                    JPanel p1=new JPanel();
                    p1.setLayout(p);
                    add(p1);
                    p1.add(nome1);
                    p1.add(nomea);
                    p1.add(cognome1);
                    p1.add(cognomea);
                    p1.add(tel1);
                    p1.add(tela);
                    p1.add(email1);
                    p1.add(emaila);
                    p1.add(ricerca);
                    setSize(300,300);
                    show();
                    
                    ricerca.add(a.lista.get(0));
                        
                    
                    
            }
            
        }
        
        public class FinestraAggiungiContatto extends JFrame implements ActionListener {
            JLabel nome2=new JLabel("Nome:   ");
            JLabel cognome2=new JLabel("Cognome:   ");
            JLabel tel2=new JLabel("Telefono:   ");
            JLabel email2=new JLabel( "E-mail:   ");
            JTextField nomeb=new JTextField();
            JTextField cognomeb=new JTextField();
            JTextField telb=new JTextField();
            JTextField emailb=new JTextField();
            String nome=nomeb.getText();
            JButton salva=new JButton("Salva");
            
            
        public FinestraAggiungiContatto(){
                GridLayout p2=new GridLayout(5,2);
                JPanel p3=new JPanel();
                p3.setLayout(p2);
                add(p3);
                p3.add(nome2);
                p3.add(nomeb);
                p3.add(cognome2);
                p3.add(cognomeb);
                p3.add(tel2);
                p3.add(telb);
                p3.add(email2);
                p3.add(emailb);
                p3.add(salva);
                salva.addActionListener(this);
                setSize(300,300);
                show();
                }
        public void inserisci(){
            
            try
            {
            
            FileWriter writer = new FileWriter("Rubrica.txt", true);
            PrintWriter out=new PrintWriter(writer);
            out.println("Contatto");
            out.println(nomeb.getText());
            out.println(cognomeb.getText());
            out.println(telb.getText());
            out.println(emailb.getText());
            out.println("");
            writer.flush();
            writer.close();
            }
             catch(IOException e) {
                  e.printStackTrace();
                }
        }
        public void actionPerformed(ActionEvent e){
            if (e.getSource()==salva){
                inserisci();
            }
        }
        
     }
        
        public class FinestraModificaContatto extends JFrame {
            JLabel nome3=new JLabel("Nome:   ");
            JLabel cognome3=new JLabel("Cognome:   ");
            JLabel tel3=new JLabel("Telefono:   ");
            JLabel email3=new JLabel( "E-mail:   ");
            JTextField nomec=new JTextField();
            JTextField cognomec=new JTextField();
            JTextField telc=new JTextField();
            JTextField emailc=new JTextField();
            
            
            public FinestraModificaContatto(){
                GridLayout p3=new GridLayout(4,2);
                JPanel p4=new JPanel();
                p4.setLayout(p3);
                add(p4);
                p4.add(nome3);
                p4.add(nomec);
                p4.add(cognome3);
                p4.add(cognomec);
                p4.add(tel3);
                p4.add(telc);
                p4.add(email3);
                p4.add(emailc);
                setSize(300,300);
                show();
                }
            }
        
        public class FinestraRimuoviContatto extends JFrame {
            JLabel nome4=new JLabel("Nome:   ");
            JLabel cognome4=new JLabel("Cognome:   ");
            JLabel tel4=new JLabel("Telefono:   ");
            JLabel email4=new JLabel( "E-mail:   ");
            JTextField nomed=new JTextField();
            JTextField cognomed=new JTextField();
            JTextField teld=new JTextField();
            JTextField emaild=new JTextField();
            
            
            public FinestraRimuoviContatto(){
                GridLayout p3=new GridLayout(4,2);
                JPanel p4=new JPanel();
                p4.setLayout(p3);
                add(p4);
                p4.add(nome4);
                p4.add(nomed);
                p4.add(cognome4);
                p4.add(cognomed);
                p4.add(tel4);
                p4.add(teld);
                p4.add(email4);
                p4.add(emaild);
                //pack();
                setSize(300,300);
                show();
                }
        }
    }
    Ho pensato di popolare una list con i dati che prendo da un'arraylist. L'ArrayList l'ho creata nella classe Contatto. Poi nel frame FinestraVisualizzaContatto ho aggiunto una List che prende i valori dall'ArrayList e li non funziona.Non visualizza nulla.Dove sbaglio?.
    A questo punto vi sarei grato se mi diceste se ho impostato bene tutto il programma, fra l'altro quando visualizzo il frame FinestraVisualizzaContatto mi si apre anche il Frame FinestraAggiungiContatto.
    Ultima modifica di tonino1; 29-05-2016 a 17:57

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    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 ....

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    Ti sono grato per tutte le critiche che mi fai perchè le ritengo costruttive e sincere. Quindi quando vuoi spara sempre a zero. Torniamo a noi.
    Non riesco a capire dove inserire l'ArrayList. E poi come faccio a collegare le JTexField di una classe ad una ArrayList di un'altra classe.Mi spiego.
    Nella classe contatto ho provato a inserire un'ArrayList e popolarla con l'istruzione che hai dato tu. Ma poi quando vado nella classe FinestraVisualizzaContatto e la istanzio non funziona.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Quote Originariamente inviata da tonino1 Visualizza il messaggio
    Nella classe contatto ho provato a inserire un'ArrayList e popolarla con l'istruzione che hai dato tu. Ma poi quando vado nella classe FinestraVisualizzaContatto e la istanzio non funziona.
    No, hai frainteso, l'ArrayList non va nella classe Contatto! Come dicevo Contatto è la tua entità di base, non ha senso che un contatto "sappia" che esistono altri contatti, ognuno è una cosa a sé stante.

    Ci sono diversi modi per rendere l'ArrayList di contatti visibile a tutte le tue classi, alcuni sono un po' complicati quindi per ora ti consiglio il più semplice.
    Per ora tutte le tue classi sono "innestate" dentro alla classe Rubrica, quindi ogni variabile dichiarata in Rubrica è visibile a tutte le tue classi.
    Quindi ti basta dichiarare l'ArrayList di contatti come variabile di istanza di Rubrica. Facendo lo scheletro delle tue classi, intendo una cosa del genere:

    codice:
    public class Rubrica
    {    
        private ArrayList<Contatto> contatti;    
        class Contatto
        {
            
        }
        public class FinestraVisualizzaContatto
        {         
            
        }
        public class FinestraAggiungiContatto
        {
            
        }
        public class FinestraModificaContatto
        {
           
        }
        public class FinestraRimuoviContatto
        {
           
        }
    }
    Inoltre l'ArrayList non va istanziata nella classe FinestraVisualizzaContatto, perchè la sovrascriveresti all'apertura di ogni frame di quel tipo.
    L'inizializzazione va fatta una sola volta, quindi ti consiglio di farla direttamente nel metodo main, priva di costruire un'istanza della classe Rubrica , o volendo anche nel costruttore di Rubrica, se ipotizzi di volere creare più di una Rubrica e quindi di volere separare le liste di contatti delle diverse Rubriche.

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    Allora faccio il punto. Ho riscritto il codice e al posto delle classi ho inserito vari metodi per la funzione rubrica. Quello che non mi riesce e' richiamare la stessa arraylist presente nel metodo InserisciContatto nel metodo Salva per salvare i dati in un file. Non riesco a estrarre i dati di questa lista presente nel metodo Salva che e' presente anche nel metodo inserisciContatto. Come posso fare?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2014
    residenza
    Padova
    Messaggi
    361
    Dove è definita l'arraylist di contatti? La ricrei all'interno dei metodi?

    Se hai seguito lo schemino che avevo buttato giù nel post #11, l'ArrayList<Contatto> contatti dovrebbe essere definita in unico posto, dove sia visibile a tutte le classi/metodi (ripeto che non è l'unica soluzione, ma la più semplice nel tuo caso).
    Anche l'inizializzazione va fatta una volta sola, forse l'errore è che la ricrei all'interno di qualche metodo?

    Prova a postare il codice e vediamo cosa non va

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    Allora ecco qui il codice che ho cercato di sistemare. Però come al solito non riesco a richiamare i stessi dati che ho inserito nella classe contatto nella classe salva:
    codice:
    import javax.swing.*;
    
    
    import java.awt.*;
    import java.awt.List;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.*;
    import java.io.*;
    import java.util.*;
    import java.lang.*;
    
    
    
    
    public class RubricadaConsolle1 {
    	public String s,s1,s2,s3;
    	public ArrayList<Contatto>  contatti=new ArrayList();
    	
    	public RubricadaConsolle1(){
    			
    		}
    	public static void main(String[] args){
    		RubricadaConsolle1 x=new RubricadaConsolle1();
    		RubricadaConsolle1.Menu menu=x.new Menu();
    		
    		for (; ;){
    		Scanner input=new Scanner(System.in);
    		String s=input.nextLine();
    		//System.out.println(s);
    		
    		switch(s){
    		case "1":
    			
    			RubricadaConsolle1 z=new RubricadaConsolle1(); 
    			RubricadaConsolle1.Inserisci inser=z.new Inserisci();
    			//inser.inserisciContatto();
    			break;
    		case "4":
    			RubricadaConsolle1 w=new RubricadaConsolle1();
    			RubricadaConsolle1.LeggiFile file=w.new LeggiFile();
    			//file.LeggidaFile();
    			break;
    		
    		case "6":
    			RubricadaConsolle1 v=new RubricadaConsolle1();
    			RubricadaConsolle1.Salva salva=v.new Salva();
    			//1salva.salva();
    			break;
    		}
    	}
    }
    	
    	public 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;
    		    }
    }//fine classe 
    				
    	public class Menu {
    		public Menu(){
    			System.out.println("Inserisci la tua scelta: ");
    			System.out.println(" 1) Inserisci un contatto ");
    			System.out.println(" 2)Modifica Contatto ");
    			System.out.println(" 3)Visualizza Contatto");
    			System.out.println(" 4)Leggi contatti da File");
    			System.out.println(" 5)Rimuovi contatto");
    			System.out.println(" 6)Salva contatti su file");
    			System.out.println(" 7)Esci");
    		}			
    				
    }//fine classe
    		
    	public class Inserisci {
    		public Inserisci(){
    			contatti=new ArrayList();
    		System.out.println("Inserisci nome ");
    		Scanner ainput=new Scanner(System.in);
    		 s=ainput.nextLine();
    		System.out.println("Inserisci cognome");
    		 s1=ainput.nextLine();
    		System.out.println("Inserisci telefono");
    		 s2=ainput.nextLine();
    		System.out.println("Inserisci Email");
    		 s3=ainput.nextLine();
    		 contatti.add(new Contatto(s,s1,s2,s3));
    		
    		RubricadaConsolle1 ins=new RubricadaConsolle1();
    		RubricadaConsolle1.Menu men=ins.new Menu();
    	}
    }//fine classe
    	
    	public class Modifica {
    			public Modifica(){
    				
    			}
    		}//fine classe
    		
    	public class Rimuovi {
    			public Rimuovi(){
    				
    	}
    }
    	
    	public class Salva {
    		String nom,cog,tel,em;
    		public Salva(){
    			
    		RubricadaConsolle1 c=new RubricadaConsolle1();
    		RubricadaConsolle1.Contatto con=c.new Contatto(nom,cog,tel,em);
    		
    		try
    		{
    		
    		FileWriter writer = new FileWriter("Rubrica.txt", true);
    		PrintWriter out=new PrintWriter(writer);
    		out.println("Contatto");
    		out.println(con.getNome());
    		out.println(con.getCognome());
    		out.println(con.getTelefono());
    		out.println(con.getEmail());
    		out.println("non funziona");
    		writer.flush();
    		writer.close();
    		}
    		 catch(IOException e) {
    		      e.printStackTrace();
    		    }
    		
    		
    		//ArrayList contact=RubricadaConsolle1.this.contatti;
    		
    		
    		
    		//contact.add(cont.s1);
    		//contact.add(cont.s2);
    		//contact.add(cont.s3);
    		//for(int i=0;i<contact.size();i++){
    			//System.out.println(contact.get(i));	
    			
    			
    		//out.println(contact.get(i));
       }
    }//fine classe
    	
    	
    	
    	public class LeggiFile {
    		public LeggiFile(){
    			try
    			{
    				Runtime.getRuntime().exec("notepad Rubrica.txt");
    			}catch (Exception f) {
    					System.out.println ("Errore exec:" + f);
    			}
    		}
    }//fine classe
    	
    	
    }

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    213
    E' la classe Salva che non riesco a implementare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.