Update del contenuto di alcune jtextfield

di il
6 risposte

Update del contenuto di alcune jtextfield

Ciao,
ho un pannello contenente alcune jtextfield editabili e un bottone.
Le jtextfield le valorizzo sulla base di una select su una tabella.
Alcune sono vuote perchè le corrispondenti colonne della tabella sono vuote.

Quando premo il bottone dovrei fare l'update del valore "corrente" presente nelle jtextfield.

Le situazioni che vorrei gestire sono 2:

1) devo modificare i valori presenti in alcune jtextfield (ad es. se c'è scritto "aaa" lo devo modificare in "aa" e fare l'update sulla tabella)
2) devo scrivere dei valori nelle jtextfield vuote e fare l'update nella tabella.

esempio

Supponiamo di avere 2 jtextfield una jtextfield1 contenente "aaa" e una jtextfield2 vuota.
Memorizzo i loro valori in delle variabili

campo1 = jtextfield1.getText();
campo2 = jtextfield2.getText();
Per il momento, quando premo il bottone, faccio la stampa del valore delle variabili campo1 e campo2 per vedere se contengono le modifiche effettuate.

Il problema è che appena effettuo delle modifiche (ad es. jtextfield1 la modifico in "aa" e jtextfield2 la modifico scrivendo "bbb") e premo il bottone che mi servirà per fare gli update, le variabili continuano a contenere "aaa" e stringa vuota.


Come potrei gestire questi casi?

grazie per l'attenzione

6 Risposte

  • Re: Update del contenuto di alcune jtextfield

    Ciao, manda il testo completo del codice!
  • Re: Update del contenuto di alcune jtextfield

    Di seguito riporto la parte di codice direttamente interessata:
    
    int i=0;
    while(resultset.next()){
    ...
    jtextfield1.setText(colonne[i]);   //colonne[] è l'array che contiene le colonne della tabella con cui popolo le jtextfield
    campo1 = jtextfield1.getText();
    panel.add(jtextfield1); //panel è il pannello che contiene le jtextfield
    ...
    i++;
    }
    
  • Re: Update del contenuto di alcune jtextfield

    Ciao, ascolta ma nel ActionListener del bottone fai una cosa tipo textField.setText(textField.getText()); o cmq qualcosa del genere ??

    Ciaop
  • Re: Update del contenuto di alcune jtextfield

    Da cosa ti rendi conto che i valori restano uguali ? Te li fai stampare ? Puoi mettere il codice di test ?
  • Re: Update del contenuto di alcune jtextfield

    Di seguito riporto il codice più in dettaglio.
    Ho effettuato qualche modifica, ma non ho ancora trovato la soluzione

    Creo dinamicamente le jtextfield e le popolo coi valori ricavati da una tabella.
    
    				int i=0;
    				...
    				while(rsQuery.next())
    					colonna[i] = rsQuery.getString(3);//nome colonna della tabella
    					panel[i] = new JPanel();
    					y_panelSub = y_panelSub+60;
    					panel[i].setLayout(null);
    					panel[i].setBounds(0,y_panelSub,400,80);
    					
    					jl = new JLabel(colonna[i]);
    					jl.setFont(new Font("Verdana",Font.PLAIN,12));
    					jtf = new JTextField(10);
    					
    					if (colonna[i].equals("campo1")){
    							jtf.setText(campo_tabella[i]);//Recupero il        valore da inserire nella jtextfield dalla colonna di una tabella del db
    							campo1 = jtf.getText();
    							jtf_list.add(jl.getText());//aggiungo alla lista la label della jtextfield
    							jtf_list.add(campo1);//aggiungo alla lista il valore della jtextfield
    	        			}
    					
    					if (colonna[i].equals("campo2")){
    							jtf.setText(campo_tabella[i]);
    							campo2 = jtf.getText();
    							jtf_list.add(jl.getText());
    							jtf_list.add(campo2);
    	        			}
    	        			
    	        			if (colonna[i].equals("campo3")){
    							jtf.setText(campo_tabella[i]);
    							campo3 = jtf.getText();
    							jtf_list.add(jl.getText());
    							jtf_list.add(campo3);
    	        			}
    	        			
    	        			jtf.setFont(new Font("Verdana",Font.BOLD,10));
    					jl.setBounds(10,20,180,20);
    					jtf.setBounds(210,20,160,20);
    					jtf.addActionListener(this);
    					
    					panel[i].add(jl);
    					panel[i].add(jtf);
    				
    					i++;
    				}//fine while per recuperare le colonne della tabella
    			
    			
    	
    	
    	public void actionPerformed (ActionEvent e) {
    		if(e.getSource() == jb_modifica){
    			modifica();
    		}
    	}
    	
    	public void modifica(){
    			jtf.setText(jtf.getText());
    			System.out.println(jl.getText()+" "+jtf.getText());//?? mostra solo l'ultima label e l'ultima  jtextfield del pannello
    			
    	} 
    

    Non appena premo il pulsante per le modifiche, riesco a visualizzare solo il valore dell'ultima jtextfield su cui opero una modifica.
    Ad esempio campo3 contiene "prova" (valore recuperato dalla tabella del db).
    A questo punto, modifico nella jtextfield il contenuto scrivendo ad es. "test" al posto di "prova".
    Premo il pulsante che richiama il metodo modifica ed effettivamente mi mostra il nome della label e il nuovo valore della jtextfield "test".

    Non mi è chiaro come fare la stessa cosa per tutte le jtextfield e non solo l'ultima.
    In altre parole non so come tenere da qualche parte il riferimento alle varie jtextfield, in modo tale da poter modificare i loro valori e memorizzarli per poi effettuare le updates sulla tabella.
  • Re: Update del contenuto di alcune jtextfield

    Problema risolto:

    ho inserito le jlabel e le jtextfield in un array.
    
    ...
    jtf[i] = new JTextField(campi_tabella[i]);
    
Devi accedere o registrarti per scrivere nel forum
6 risposte