Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50

    [java]Inviare un pannello a seguito di un evento

    Salve
    Ho un piccolo problema dovuto probabilmente al fatto che lavoro da poco con Java
    Praticamente:

    Il mio scopo è progettare una finestra in cui vado a mettere un certo numero di bottoni.
    Il pannello viene creato nella classe Crea_finestra e ritorna alla MainClass che lo salva come "p".

    A questo punto premo su un bottone, si attiva actionPerformed e mi manda in una classe in cui ho i nomi di nuovi bottoni da mettere sul pannello "p" (e i bottoni precedenti vanno eliminati)

    La mia domanda è: Come faccio a fare in modo che quando viene segnalato l'evento, venga passato anche un riferimento a "p"? (questo perché voglio pulire il pannello e riempirlo coi nuovi bottoni della classe in cui mi trovo)

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Come ti manda nella classe? Cioè, instanzi qualcosa?

    Se non posti del codice è difficile aiutarti.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Questo è il codice..
    Io ho creato il programma in modo che ad ogni bottone premuto si apra una nuova finestra.. Ora però cercare di fare una cosa più carina e fare tutto in un unica finestra.
    Il mio problema è che non so come lavorare sul pannello dal momento che premendo su un bottone, non riesco a mettere negli actionPerformed un riferimento a esso;
    Prima intendevo dire che, attivando la actionPerformed, sono costretto a crearmi un nuovo pannello ogni volta perché non so come passargli quello vecchio (insomma riesco a "portarmelo dietro")

    Sono sicuro che esiste una soluzione (che sicuramente sarà anche una baggianata), ma non la conosco.

    Comunque ecco il codice (ho postato tutto, ma penso bastassero le prime 3 o 4 classi per esporre il mio problema)

    codice:
    public class MainClass {
    
    	public static void main(String[] args) {		
    		
    		Crea_finestra fin = new Crea_finestra();
    		JFrame jf = new JFrame();
    		
    		int alt=200, lung=400;
    		String Titolo= "Menù";
    		jf= fin.crea_JF (Titolo, lung, alt);
    
    		String campi[] = {"Inserisci", "Modifica", "Cancella", "Esci"};		
    
    		JPanel p = new JPanel();
    		p= fin.crea_JP(jf);
    		
    		Crea_menu cm= new Crea_menu();
    		cm.pannello_menu(p, campi, 4, Titolo);
    	}	
    }

    codice:
    public class Crea_finestra {
    
    	/**Crea un frame **/
    	public JFrame crea_JF(String Titolo,int lung, int alt) {
    
    		JFrame jf = new JFrame(Titolo);
    		jf.setBounds(400, 100, lung, alt);
    		jf.setVisible(true);
    		return(jf);
    	}
    	
    	/**Crea un pannello **/
    	public JPanel crea_JP(JFrame jf) {
    
    		Container cont_jf = jf.getContentPane(); 
    		JPanel p = new JPanel();
    		cont_jf.add(p);
    		jf.setVisible(true);
    		return(p);
    	}
    }

    codice:
    public class Crea_menu extends JPanel implements ItemListener, ActionListener {
    
    	JButton bottoni[];
    
    	/**Forma il pannello Menù **/
    	public void pannello_menu(JPanel p, String campi[], int num_campi, String Titolo) {
    		
    		p.removeAll();
    		bottoni = new JButton[num_campi];
    				
    		for(int i= 0; i< num_campi; i++) {
    			bottoni[i] = new JButton(campi[i]);
    			bottoni[i].addActionListener(this);	
    			p.add(bottoni[i]);
    		}
    				
    		p.repaint();
    		p.validate();
    		p.setVisible(true);
    		
    	}
    	
    	public void actionPerformed(ActionEvent e) {
    		
    		if(e.getSource()== bottoni[0]) {
    			Scelta_inserisci si= new Scelta_inserisci();
    			si.s_inserisci();
    		}
    		if(e.getSource()== bottoni[1]) {
    			System.out.print("Dovrebbe fare la modifica.\n");
    //			Modifica_Utente MU= new Modifica_Utente();
    //			MU.Modifica();
    		}
    		if(e.getSource()== bottoni[2]) {
    			System.out.print("Dovrebbe fare la cancellazione.\n");
    //			Cancella_Utente CU= new Cancella_Utente();
    //			CU.Cancella();					
    		}
    		if(e.getSource()== bottoni[3]) {
    			this.setVisible(false);
    			System.exit(0);
    		}
    	}
    	
    	public void itemStateChanged(ItemEvent arg0) {
    	}
    }

    codice:
    public class Scelta_inserisci extends JPanel implements ItemListener, ActionListener {
    
    	JButton[] bottoni;
    	int num_b = 15;
    	String testo_b[] = {"Accesso", "Assegnata", "Docente", "Laboratorio", "Locale", "Permesso", "Personale", 
    		"Postazione_L", "Postazione_V", "Prenotazione", "Risorsa", "Studente", "Tipo", "Utente", "Esci"}; 
    
    	/** Forma il pannello Menù --> Inserisci **/
    	public void s_inserisci() {
    
    		Crea_finestra cjf= new Crea_finestra();
    		JFrame jf= new JFrame();
    		int alt=200, lung=800;
    
    		jf= cjf.crea_JF("Menù --> Inserisci", lung, alt);
    
    		JPanel p = new JPanel();
    		p= cjf.crea_JP(jf);
    		Container cont_jf = jf.getContentPane(); 
    				
    		bottoni = new JButton[num_b];
    	
    		for(int i= 0; i< num_b; i++) {
    			bottoni[i] = new JButton(testo_b[i]);
    			bottoni[i].addActionListener(this);	
    			p.add(bottoni[i]);
    		} 
    	}
    	
    	public void actionPerformed (ActionEvent ae) {
    
    		Inserisci Ins= new Inserisci();
    		for (int i=0; i<num_b; i++) {
    			if(ae.getSource()== bottoni[i]) {
    				Ins.pannelli_inserisci(i);	}	
    			
    		} 
    	}
    
    	public void itemStateChanged(ItemEvent ae) {		
    	}
    }

    codice:
    public class Inserisci extends JPanel implements ItemListener, ActionListener {
    
    	JLabel lab[];
    	JTextField tf[];
    	int num_campi;
    	JButton fatto, uscita;
    	String Risultati[], Titolo;
    
    	/** fornisce le specifiche per ogni tipo di pannello **/
    	public void pannelli_inserisci(int valore) {		
    		
    		switch(valore) {
    			case 0: {
    				String campi[]= {"Data accesso", "Ora accesso", "Tessera", "Denominazione", "Codice tipo", "Riuscito", "Giorno"}; 
    				String Titolo= "Accesso";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 1: {
    				String campi[]= {"Mese", "Numero postazione vincolata", "Numero laboratorio", "Denominazione", 
    						"Codice studente", "Codice docente"};
    				String Titolo= "Assegnata";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 2: {
    				String campi[]= {"Codice docente", "Tessera"}; 
    				String Titolo= "Docente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 3: {
    				String campi[]= {"Numero laboratorio", "Denominazione", "Codice personale", "Codice docente"}; 
    
    				String Titolo= "Laboratorio";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 4: {
    				String campi[]= {"Denominazione", "Via"}; 
    				String Titolo= "Locale";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 5: {
    				String campi[]= {"Tessera", "Denominazione", "Codice Tipo"}; 
    				String Titolo= "Permesso";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 6: {
    				String campi[]= {"Codice personale", "Tecnico (T/F)", "Tessera"}; 
    				String Titolo= "Personale";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 7: {
    				String campi[]= {"Numero postazione","Numero laboratorio", "Denominazione"}; 
    				String Titolo= "Postazione_L";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 8: {
    				String campi[]= {"Numero postazione","Numero laboratorio", "Denominazione"}; 
    				String Titolo= "Postazione_V";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 9: {
    				String campi[]= {"Numero postazione", "Denominazione", "Numero laboratorio", "Codice studente",
    						"Codice docente","Data inizio","Data fine","Orario inizio","Orario fine", "Giorno"}; 
    				String Titolo= "Prenotazione";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 10: {
    				String campi[]= {"Descrizione","Numero laboratorio", "Denominazione", "Codice risorsa"}; 
    				String Titolo= "Risorsa";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 11: {
    				String campi[]= {"Codice studente", "Tessera"}; 
    				String Titolo= "Studente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 12: {
    				String campi[]= {"Codice tipo", "Giorno", "Orario inizio", "Orario fine"}; 
    				String Titolo= "Tipo";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 13: {
    				String campi[]= {"Nome", "Cognome", "Citta", "Tessera"}; 
    				String Titolo= "Utente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 14: System.exit(0); break;
    			default: System.out.println("Errore.");break;
    		}
    	}	
    	
    /**Crea il pannello**/
    	public void crea_pannello_inserisci(String campi[], int num_campi, String Titolo) {
    		
    		Crea_finestra cjf= new Crea_finestra();
    		JFrame jf= new JFrame();
    		int lung=700, alt= 200;
    		jf= cjf.crea_JF("Menù --> Inserisci --> " + Titolo, lung, alt);
    
    		JPanel p = new JPanel();
    		
    		p= cjf.crea_JP(jf);
    		Container cont_jf = jf.getContentPane(); 
    		
    		/** lab e tf sono gli array di label o caselle di testo **/
    		lab = new JLabel[num_campi];
    		tf = new JTextField[num_campi];
    
    		/** 
    		*	assegno al label "i" un testo
    		*	aggiungo il label al pannello
     		*	faccio la stessa cosa con la casella di testo
    		**/
    		for(int i= 0; i< num_campi; i++) {
    			lab[i] = new JLabel(campi[i]);
    			p.add(lab[i]);
    			tf[i]= new JTextField("inserire testo..");
    			p.add(tf[i]);
    		}
    		
    		fatto= new JButton("Fatto");
    		p.add(fatto);	
    		uscita= new JButton("Esci");
    		p.add(uscita);		
    	}
    	
    	public void actionPerformed (ActionEvent ae) {
    		if(ae.getSource()== fatto) {
    			for(int i= 0; i< num_campi; i++) {
    				Risultati[i]= tf[i].getText();
    				tf[i].setText(" ");
    			}
    			Inserisci con = new Inserisci();
    			con.connetti(Risultati);
    		}
    		if(ae.getSource()== uscita) {
    			System.exit(0);
    		}
    	}
    
    /** Effettua la connessione con il database **/	
    	public void connetti(String Risultati[]){
    
    		String sql = "INSERT INTO " + Titolo + " VALUES ('";
    		for (int i=0; i< num_campi-1; i++) {
    			sql= sql + Risultati[i] + "', '" ;
    		}
    		sql= sql + Risultati[num_campi-1] + "')'";
    
    		try {
    			Class.forName ("org.postgresql.Driver");
    			Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/UniversDB", "muser", "pw");
    			Statement stmt = conn.createStatement();				
    			stmt.executeUpdate(sql);
    			stmt.close();
    		}
    		catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void itemStateChanged(ItemEvent arg0) {
    	}	
    }

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Secondo me l'hai progettato male..

    Hai un testo o un idea scritta di quello che devi realizzare?

    Generalmente nel main() viene solamente lanciata l'applicazione.
    La classe Crea_finestra non la realizzerei così...la renderei privata, ed i suoi metodi statici. Il main() come detto lo farei diverso, ed estenderei JFrame proprio da quella classe.

    I vari pannelli dove vuoi mostrarli? ed in che posizione si trovano i bottoni?
    Ci sono vari modi per mostrarli, uno di essi è questo: http://download.oracle.com/javase/tu...abbedpane.html

    Comunque ripeto, se posti anche quello che devi ottenere (traccia da seguire).. è meglio

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Non ho un testo in quanto quello che sto facendo è un lavoro opzionale; l'esame consisteva nel creare un database per la gestione di un università (cosa che ho già fatto) e, se si voleva, mettere una semplice interfaccia in java.

    Il problema è che è il mio primo lavoro in java e non so bene dove mettere le mani in quanto ho solo una lunga serie di piccoli esempietti illustrativi che trovano il tempo che trovano..

    Dato che l'interfaccia la posso fare come voglio, pensavo di fare una cosa del genere:

    - Una finestra iniziale che chieda inizialmente l'operazione da eseguire sul DB (inserimento, modifica o cancellazione).
    - Fatta la scelta, ridisegnare il pannello di quella finestra chiedendo che cosa si voleva inserire (modificare o cancellare); es: Inserisco Utente, Modifico Dipartimento, Cancello Docente.
    - A questo punto ridisegnare ancora il pannello mettendo delle JTextField in cui inserire i valori.

    Insomma, una cosina terra-terra


    Comunque ora ho messo il contenuto del Main dentro a CreaMenu e ho impostato a static i metodi di Crea_finestra; ma se li imposto anche privati, poi come faccio a invocarli da altre classi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Comunque ora ho messo il contenuto del Main dentro a CreaMenu e ho impostato a static i metodi di Crea_finestra; ma se li imposto anche privati, poi come faccio a invocarli da altre classi?
    Non dichiararli come privati, sarà una classe di utilità che andrai ad utilizzare proprio per ottenere frame e pannello


    Originariamente inviato da Tirrel
    Dato che l'interfaccia la posso fare come voglio, pensavo di fare una cosa del genere:

    - Una finestra iniziale che chieda inizialmente l'operazione da eseguire sul DB (inserimento, modifica o cancellazione).
    - Fatta la scelta, ridisegnare il pannello di quella finestra chiedendo che cosa si voleva inserire (modificare o cancellare); es: Inserisco Utente, Modifico Dipartimento, Cancello Docente.
    - A questo punto ridisegnare ancora il pannello mettendo delle JTextField in cui inserire i valori.
    Ok, quindi suppongo che per ogni operazione hai un numero preciso di campi (cioè, se devi inserire i valori saranno sempre quegli N valori, non aumenteranno).

    E utilizzare un JTabbedPane, dove ogni scheda (una inserisci, una modifica, una cancellazione) contiene i pripri elementi? (JButton, JTextField,...)
    Oppure, se proprio non vuoi utilizzare quella struttura, potresti personalizzarla utilizzando un CardLayout. In pratica ogni pannello (controllato dalla pressione su un bottone) esporrà i suoi elementi un esempio lo puoi trovare Qui

    Se invece vuoi utilizzare un JFrame che mostri i pulsanti in modo da scegliere, potresti utilizzare un nuovo frame (chiudendo il precedente, e passando al nuovo frame il frame vecchio..così, chiudendo il nuovo frame puoi ripristinare quello vecchio). Su questo nuovo frame puoi implementare quanto hai detto nel punto 2.

    Io rimango dell'idea che con un CardLayout sia molto meglio, poichè puoi mettere i pulsanti sulla finestra e scegliere che pannello mostrare

    PS: Nell'esempio che ti ho linkato i pulsanti vengono messi su una JToolBar, ma ovviamente (come ho detto) puoi metterli anche all'interno del frame.

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Ciao, sono finalmente riuscito a trovare un po di tempo per tornare al progetto e ho fatto un po di modifiche; ho deciso di utilizzare un JTabbedPane e devo dire che in effetti è visivamente molto più bello di quello che avevo in mente io.

    Ora però ho un nuovo piccolo problema.. Riesco a inserire una sola pagina
    Ti faccio vedere il codice:

    codice:
    public class Operazione_scelta extends JPanel implements ItemListener, ActionListener {
    
    	public JTabbedPane Pagina; 
    	public JFrame jfp;
        public Container cont_jfp;
    	JButton Fatto= new JButton("Fatto"), Fine= new JButton("Fine");
        String campi[];	
    	String nomi_pagine[] = {"Accesso", "Assegnata", "Docente", "Laboratorio", 
    					"Locale", "Permesso", "Personale", "Postazione_L", "Postazione_V", 
    					"Prenotazione", "Risorsa", "Studente", "Tipo", "Utente", "Esci"}; 
    
    
    	/** Crea una nuova finestra composta da pagine **/
    	public void crea_finestra_con_pagine(String Titolo) {
    
    		int alt=200, lung=800;
    		jfp= Crea_finestra.crea_JF("Menù --> " + Titolo, lung, alt);
    		cont_jfp = jfp.getContentPane();		
    
    
    	//Per ogni pagina, va in Inserisci e utilizza uno Switch Case per conoscere 
    	//i campi che andranno a popolare la finestra 
    		for (int i=0; i<nomi_pagine.length; i++) {
    			campi= Inserisci.Trova_campi(i);
    			Aggiungi_pagina(nomi_pagine[i], campi, jfp);
    		}		
    
    //		campi= Inserisci.Trova_campi(0);
    //		Aggiungi_pagina(nomi_pagine[0], campi, jfp);
    	}
    	
    	
    	//Aggiunge una nuova pagina al frame
    	public void Aggiungi_pagina(String Titolo, String[] campi, JFrame jfp) { 
    
    		JPanel panel= Crea_finestra.crea_JP(jfp);
    		JLabel Lcampi[]= new JLabel[campi.length];
    		JTextField Tcampi[]= new JTextField[campi.length];
    		
    		panel.setLayout(new GridLayout(campi.length+1, 2));
    	    
    	    /** 
    		*	assegno al label "i" un testo
    		*	aggiungo il label al pannello
     		*	faccio la stessa cosa con la casella di testo
    		**/
    		for(int j= 0; j<campi.length; j++) {
    			Lcampi[j] = new JLabel(campi[j]);
    			panel.add(Lcampi[j]);
    			Tcampi[j]= new JTextField("inserire testo...");
    			panel.add(Tcampi[j]);
    		}
    
    
    		Fatto= new JButton("Fatto");
    		Fine= new JButton("Esci");
    		panel.add(Fatto);	
    		panel.add(Fine);		
    		Fatto.addActionListener(this);
    		Fine.addActionListener(this);
    		
    		Pagina= new JTabbedPane();		
    		Pagina.addChangeListener(new TabListener()); 
    		Pagina.addTab(Titolo, panel); 
    	        jfp.getContentPane().add(Pagina); 
    		jfp.pack(); 
    		panel.setVisible(true);
    	}
    	
    	public void actionPerformed (ActionEvent ae) {
    		if(ae.getSource()== Fatto) {
    			System.out.println("Hai premuto su Fatto.");		
    		}	
    		if(ae.getSource()== Fine) {
    			this.setVisible(false);
    			System.exit(0);
    		}
    	}
    
    	public void itemStateChanged(ItemEvent ae) {		
    	}
    }
    Ho provato a inserire una pagina singola e ci sono riuscito senza troppi problemi utilizzando quelle che ora sono righe commentate
    codice:
    //		campi= Inserisci.Trova_campi(0);
    //		Aggiungi_pagina(nomi_pagine[0], campi, jfp);
    Ma se cerco di mettere anche le altre, succede che per meno di mezzo secondo vedo diverse finestre che si aprono e poi il programma termina senza segnalare nulla.
    Hai idea di dove sia l'errore?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Al momento ho poco tempo (non più di 7 minuti) per controllare il tuo codice.. ho notato subito una cosa però, questo:
    codice:
    campi= Inserisci.Trova_campi(i);
    Che cosa torna? Un array di stringhe?

    codice:
    for (int i=0; i<nomi_pagine.length; i++) {
      campi= Inserisci.Trova_campi(i);
      Aggiungi_pagina(nomi_pagine[i], campi, jfp);
    }
    campi è dichiarato come array di tipo String...quindi, se non hai un array di campi (sottoforma di Stringa) è bene rimuovere le quadre dalla dichiarazione

    codice:
    public void Aggiungi_pagina(String Titolo, String[] campi, JFrame jfp) {
    Qui vedo che riceve un array di campi String...quindi, le cose sono 2:

    1) Campi sarà di tipo String, ma non un array!
    2) nel for mostrato sopra, farai campi[i] = Inserisci.Trova_campi(i);

    Devi specificare un indice insomma..ed inoltre, devi inizializzare l'array prima


    Ho notato questo per ora...ma come ho detto ho molto poco tempo, quindi non escludo che potrei aver detto qualche stupidaggine :asd:
    Questa sera ho tempo per controllare il codice comunque.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Che velocità

    Questo è il codice dell'altra classe

    codice:
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.ItemEvent;
    import java.awt.event.ItemListener;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JTextField;
    /*	Accesso, Assegnata, Docente, Laboratorio, Locale, Permesso, Personale, 
    Postazione_L, Postazione_V, Prenotazione, Risorsa, Studente, Tipo, Utente;	*/		
    
    public class Inserisci extends JPanel implements ItemListener, ActionListener {
    
    	JLabel lab[];
    	JTextField tf[];
    	int num_campi;
    	JButton fatto, uscita;
    	public String Risultati[], Titolo;
    
    	// fornisce le specifiche per ogni tipo di pannello 
    	public static String[] Trova_campi(int valore) {	
    		
    		String campi[];
    		switch(valore) {
    			case 0: {
    				campi= new String[] {"Data accesso", "Ora accesso", "Tessera", "Denominazione", "Codice tipo", "Riuscito", "Giorno"}; 
    				String Titolo= "Accesso";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);
    			}; break; 
    
    			case 1: {
    				campi= new String[] {"Mese", "Numero postazione vincolata", "Numero laboratorio", "Denominazione", 
    						"Codice studente", "Codice docente"};
    				String Titolo= "Assegnata";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);			
    			}; break; 
    
    			case 2: {
    				campi= new String[] {"Codice docente", "Tessera"}; 
    				String Titolo= "Docente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 3: {
    				campi= new String[] {"Numero laboratorio", "Denominazione", "Codice personale", "Codice docente"}; 
    
    				String Titolo= "Laboratorio";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 4: {
    				campi= new String[] {"Denominazione", "Via"}; 
    				String Titolo= "Locale";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 5: {
    				campi= new String[] {"Tessera", "Denominazione", "Codice Tipo"}; 
    				String Titolo= "Permesso";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 6: {
    				campi= new String[] {"Codice personale", "Tecnico (T/F)", "Tessera"}; 
    				String Titolo= "Personale";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 7: {
    				campi= new String[] {"Numero postazione","Numero laboratorio", "Denominazione"}; 
    				String Titolo= "Postazione_L";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 8: {
    				campi= new String[] {"Numero postazione","Numero laboratorio", "Denominazione"}; 
    				String Titolo= "Postazione_V";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 9: {
    				campi= new String[] {"Numero postazione", "Denominazione", "Numero laboratorio", "Codice studente",
    						"Codice docente","Data inizio","Data fine","Orario inizio","Orario fine", "Giorno"}; 
    				String Titolo= "Prenotazione";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 10: {
    				campi= new String[] {"Descrizione","Numero laboratorio", "Denominazione", "Codice risorsa"}; 
    				String Titolo= "Risorsa";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 11: {
    				campi= new String[] {"Codice studente", "Tessera"}; 
    				String Titolo= "Studente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 12: {
    				campi= new String[] {"Codice tipo", "Giorno", "Orario inizio", "Orario fine"}; 
    				String Titolo= "Tipo";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 13: {
    				campi= new String[] {"Nome", "Cognome", "Citta", "Tessera"}; 
    				String Titolo= "Utente";
    				Inserisci pi= new Inserisci();
    				pi.crea_pannello_inserisci(campi, campi.length, Titolo);				
    			}; break; 
    
    			case 14: {			
    				campi= new String[] {"USCITA"}; 
    				System.exit(0); break;
    			}
    			default: { 				
    				campi= new String[] {"ERRORE"}; 
    				System.out.println("Errore.");
    				System.exit(0);
    				}; break;
    		}
    		return(campi);
    	}	
    	
    /**Crea il pannello**/
    	public void crea_pannello_inserisci(String campi[], int num_campi, String Titolo) {
    		
    //		int lung=700, alt= 200;		
    //		JFrame jf= Crea_finestra.crea_JF("Menù --> Inserisci --> " + Titolo, lung, alt);
    //		JPanel p= Crea_finestra.crea_JP(jf);
    //		Container cont_jf = jf.getContentPane(); 
    		
    		/** lab e tf sono gli array di label o caselle di testo **/
    		lab = new JLabel[num_campi];
    		tf = new JTextField[num_campi];
    
    		/** 
    		*	assegno al label "i" un testo
    		*	aggiungo il label al pannello
     		*	faccio la stessa cosa con la casella di testo
    		**/
    /*		for(int i= 0; i< num_campi; i++) {
    			lab[i] = new JLabel(campi[i]);
    			p.add(lab[i]);
    			tf[i]= new JTextField("inserire testo..");
    			p.add(tf[i]);
    		}
    		
    		fatto= new JButton("Fatto");
    		p.add(fatto);	
    		uscita= new JButton("Esci");
    		p.add(uscita);		
    */	}
    	
    	public void actionPerformed (ActionEvent ae) {
    		if(ae.getSource()== fatto) {
    			for(int i= 0; i< num_campi; i++) {
    				Risultati[i]= tf[i].getText();
    				tf[i].setText(" ");
    			}
    			Inserisci con = new Inserisci();
    			con.connetti(Risultati);
    		}
    		if(ae.getSource()== uscita) {
    			System.exit(0);
    		}
    	}
    
    /** Effettua la connessione con il database **/	
    	public void connetti(String Risultati[]){
    
    		String sql = "INSERT INTO " + Titolo + " VALUES ('";
    		for (int i=0; i< num_campi-1; i++) {
    			sql= sql + Risultati[i] + "', '" ;
    		}
    		sql= sql + Risultati[num_campi-1] + "')'";
    
    		try {
    			Class.forName ("org.postgresql.Driver");
    			Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/UniversDB", "muser", "pw");
    			Statement stmt = conn.createStatement();				
    			stmt.executeUpdate(sql);
    			stmt.close();
    		}
    		catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		catch (SQLException e) {
    			e.printStackTrace();
    		}
    	}
    
    	public void itemStateChanged(ItemEvent arg0) {
    	}	
    }
    Quindi si, campi è un array di stringhe; nel "campi" della classe "Operazione_scelta" voglio che ci sia l'indirizzo del "campi" ritornato dalla classe "Inserisci".

    Praticamente devo avere dentro a campi una cosa del genere: "Data accesso", "Ora accesso", "Tessera", "Denominazione", "Codice tipo", "Riuscito", "Giorno" (che corrisponde al CASE 0)
    così poi da poter mettere nella pagina queste scritte;
    fatto ciò, ripartirei col ciclo per mettere dentro a campi: "Mese", "Numero postazione vincolata", "Numero laboratorio", "Denominazione", "Codice studente", "Codice docente" (cioè il CASE 1)
    e via dicendo..

    Se infatti metto un System.out.println nel for, mi compaiono esattamente i valori che voglio
    codice:
    		for (int i=0; i<nomi_pagine.length; i++) {
    			campi= Inserisci.Trova_campi(i);
    			for(int k=0; k<campi.length; k++){
    				System.out.println("Valore di campi["+ k +"]= " + campi[k]);		
    			}
    			Aggiungi_pagina(nomi_pagine[i], campi, jfp);
    		}
    Valore di campi[0]= Data accesso
    Valore di campi[1]= Ora accesso
    Valore di campi[2]= Tessera
    Valore di campi[3]= Denominazione
    Valore di campi[4]= Codice tipo
    Valore di campi[5]= Riuscito
    Valore di campi[6]= Giorno
    Valore di campi[0]= Mese
    Valore di campi[1]= Numero postazione vincolata
    ecc ecc..

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ciao, scusa se non ho risposto prima, ma purtroppo mi ero scordato vista l'ora dell'altra sera :P

    Non sono ancora riuscito a leggere bene il codice, e anche oggi ho molto poco tempo! Comunque apporta la modifica che ti ho detto nel post precedente, ovvero utilizza campi[i] = ... per assegnargli un valore, e visto che Aggiungi_pagina si trova all'interno di quel for, è bene passare campi[i] e non campi[i]..oppure, per essere in linea con l'implementazione dell'altro metodo, dovresti mettere Aggiungi_pagina fuori dal for, così da poter passare l'array di campi completo!!

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.