Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Recuperare testo da TextField

    Sto iniziando a programmare in java, leggendo da un libro funziona tutto ma non riesco a recuperare il valore di una TextField

    codice:
    import java.awt.*;
    import java.awt.event.*;
    
    class GestoreBottone implements ActionListener 
    {
    
    	private TextArea a;
    	private TextField nome;
    	private String nomet;
    	
    	public GestoreBottone(TextArea a, TextField nome) 
    	{
    		
    		this.a = a;
    		this.nomet = nome.getText();
    	}
    	
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		String bottone = e.getActionCommand();
    		
    		if(bottone.equals("OK")) 
    		{
    			
    			a.append("Bottone ok \n\r");
    			a.append("Nome:"+nomet);
    			System.out.println(nomet);
    		
    		}
    	}
    }
    
    class Fin
    {
    	public static void main(String argv[])
    	{
    		Frame f = new Frame("Finestra vuota 1");
    		Panel p = new Panel();
    		Label l_nome = new Label("Nome");
    		Label l_cognome = new Label("Cognome");
    		Button ok = new Button("OK");
    		TextArea a = new TextArea(10, 20);
    		
    		TextField nome = new TextField(20);
    		TextField cognome = new TextField(15);
    				
    		f.setSize(300, 400);
    		f.add(p);
    		p.add(l_nome);
    		p.add(nome);
    		p.add(l_cognome);
    		p.add(cognome);
    		p.add(new Label());
    		p.add(a);
    		p.add(ok);
    		
    		ok.addActionListener(new GestoreBottone(a, nome));
    		
    		f.setVisible(true);
    		p.setVisible(true);
    	}
    }

  2. #2
    prova:

    nomeDellaVariabile.getText()
    Please, don't leave any threads alive

  3. #3
    O provato sia con this sia senza, compilando il codice non ci sono errori. Se provo a stamparla mi da che è vuota

  4. #4
    Quando crei il costruttore ok.addActionListener(new GestoreBottone(a, nome));
    gli passi le variabili a e nome.
    Quando crei quelle variabili non inserisci nessun testo, ma ti limiti a settarne le dimensioni:
    codice:
    TextArea a = new TextArea(10, 20); 
    TextField nome = new TextField(20);
    Per quello al compilatore risulta che sono vuote.
    Prima di creare GestoreBottoni dovresti inserirci un testo usando il metodo setText("").
    Spero di essere stato utile.
    Please, don't leave any threads alive

  5. #5
    Io voglio recuperare il testo che scrivo.

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    A cosa ti serve la variabile d'istanza "nome" se non la usi??
    Nel costruttore di GestoreBottone ti sei dimenticato di fare
    codice:
    this.nome = nome;
    in questo modo avrai il riferimento alla textfield nome passata come parametro al costruttore e quindi richiamando
    codice:
    nome.getText ();
    avrai il testo al suo interno

    Inoltre secondo me la variabile "nomet" è inutile , al suo interno inserisci (soltanto la prima volta , all'istanziazione di GestoreBottoni) il testo della JTextField nome mentre alle pressioni successive di "ok" otterrai sempre la stessa Stringa poichè essa non viene realmente estratta al momento ma resta invariata al momento di istanziazione come dicevo prima..sostituisci nel codice , dove scrivi , nomet con nome.getText ()


  7. #7
    Non ho capito cosa vuoi dire con questa frase.

    Originariamente inviato da zipangulu
    Inoltre secondo me la variabile "nomet" è inutile , al suo interno inserisci (soltanto la prima volta , all'istanziazione di GestoreBottoni) il testo della JTextField nome mentre alle pressioni successive di "ok" otterrai sempre la stessa Stringa poichè essa non viene realmente estratta al momento ma resta invariata al momento di istanziazione come dicevo prima..sostituisci nel codice , dove scrivi , nomet con nome.getText ()
    La classe GestoreBottone lo modificata cosi:

    codice:
    class GestoreBottone implements ActionListener 
    {
    
    	private TextArea a;
    	private TextField nome;
    	private String nomet;
    	
    	public GestoreBottone(TextArea a, TextField nome) 
    	{
    		
    		this.a = a;
    		this.nome = nome;
    		nomet = nome.getText();
    	}
    	
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		String bottone = e.getActionCommand();
    		
    		if(bottone.equals("OK")) 
    		{
    			
    			a.append("\n\rBottone ok \n\r");
    			a.append("Nome:"+nomet);
    			System.out.println(nomet);
    		
    		}
    	}
    }
    Comunque grazie dell'aiuto.

  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    Funziona come vorresti??
    Se no , modificala così:

    codice:
    class GestoreBottone implements ActionListener 
    {
    
    	private TextArea a;
    	private TextField nome;
            private String nomet;
    	
    	public GestoreBottone(TextArea a, TextField nome) 
    	{
    		
    		this.a = a;
    		this.nome = nome;
    	}
    	
    	
    	public void actionPerformed(ActionEvent e)
    	{
    		String bottone = e.getActionCommand();
    		
    		if(bottone.equals("OK")) 
    		{
    			
    			a.append("\n\rBottone ok \n\r");
                            nomet = nome.getText ();
    			a.append("Nome:"+nomet);
    			System.out.println(nomet);
    		
    		}
    	}
    }

  9. #9
    Funziona. Grazie dell'aiuto si può chiudere.

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.