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

    Letture diverse in un JTextField

    Salve, ho un problema, ho creato un campo JTextField dove devo leggere in successione 3 cose:
    una stringa
    un float
    un altro float

    riporto il codice del listener del campo JTextField

    codice:
    
    final JTextField campoDati = new JTextField();
    
    ..... codice...
    
    campoDati.addActionListener (new ActionListener(){
    			public void actionPerformed(ActionEvent e){
    				Boolean risultato;
    				String nome = campoDati.getText();
    				if (operazione==1){
    					campoDati.setText("");
     	                                float costo = Float.parseFloat(campoDati.getText());
    					campoDati.setText("");
                                            float temperatura = Float.parseFloat(campoDati.getText());
    					campoDati.setText("");
    				
    					risultato = aggiungiBevanda(nome, costo, temperatura);
    					if (risultato==true){
    						campoDati.setText("Bevanda inserita");
    					}	
    					else if (risultato==false){
    						campoDati.setText("Bevanda già presente");
    					}
    						campoDati.setEnabled(false);
    				}
    				else if (operazione==2){
    					risultato = rimuoviBevanda (nome);
    					if (risultato == true){
    						campoDati.setText("Bevanda rimossa");
    					}
    					else if (risultato == false){
    						campoDati.setText("Errore rimozione");
    					}
    				}
    			}
    		});
    Si puo' notare che è una simulazione di un distributore di bibite.
    Dunque, il problema è nel blocco operazione == 1, in rosso le linee incriminate.
    Io inserisco nella mia GUI il nome della bibita, e quello mi passa il nome anche come valori per i campi costo e temperatura, invece dovrebbe leggere il nome della bibita, pulire il campo JTextField, farmi inserire un float, ripulire il campo, e farmi inserire il secondo float.

    Grazie a chi mi risolve questo problema e buon anno

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Letture diverse in un JTextField

    Originariamente inviato da mishima
    invece dovrebbe leggere il nome della bibita, pulire il campo JTextField, farmi inserire un float, ripulire il campo, e farmi inserire il secondo float.
    Beh, ma è solo questione di "logica". Innanzitutto devi mantenere uno "stato", cioè una variabile di istanza che indica di volta in volta quale è la informazione che ti aspetti quando viene invocato il actionPerformed. E ovviamente una volta ricevuto una informazione, fai passare questa indicazione allo stato successivo.

    Questa indicazione la puoi gestire come vuoi, con un valore intero 1,2,3, con una stringa, con una enum ... poco importa. L'importante è che puoi definire 3 valori distinti.

    Supponiamo:
    info = 1 per nome bibita
    info = 2 per costo
    info = 3 per temperatura

    Nel actionPerformed (pseudo codice):

    codice:
    IF info = 1 THEN
        usa stringa come nome bibita
        pulisci campo
        set info = 2
    ELSE IF info = 2 THEN
        usa stringa come valore costo
        pulisci campo
        set info = 3
    ELSE IF info = 3 THEN
        usa stringa come valore temperatura
        pulisci campo
        fine - fai altro
    END IF
    Per ognuno degli stati, usi quel valore, pulisci il campo, imposti lo stato successivo e basta, termini lì l'actionPerformed.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ah ho capito, avevo davvero sbagliato la logica d'approccio, io credevo che potessi colloquiare volta per volta con il codice scritto nel listener, invece ogni qualvolta io invio dei dati tramite il campo quello esegue tutto il codice facendo quel pasticcio, quindi per risolvere o faccio come dici tu o provvedo a mettere 3 listener diversi, e quindi 3 campi in cui inserire i miei valori.

    grazie andbin, non è il primo dubbio che mi risolvi, auguri di buon anno

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.