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

    Problema ActionListener su JTextField

    Salve a tutti
    Vorrei riuscire a ottenere il codice della JTextField in modo dinamico, ovvero durante la digitazione. Per farlo ho creato la JTextField a cui ho aggiunto un ActionListener che deve richiamare un metodo che mi fa un controllo sul testo contenuto nella TextField (deve essere un double). Il problema è che non posso chiamare il metodo getValue su un'istanza da una classe interna
    Il codice:
    codice:
    JTextField tA = new JTextField(5); 
    tA.addActionListener(new ActionListener() { 
        public void actionPerformed(ActionEvent ev) { 
            r.setA(getValue(tA)); }
    });
    codice:
    public double getValue(JTextField t){
            /**Metodo usato nelle caselle di testo textfield per ottenere il loro 
             * valore e controllare se è possibile usarli come valori double
             */
            String x = t.getText();
            try{
                double y = Double.parseDouble(x);
            } catch(NumberFormatException ex){
                System.out.println("Impossibile: il testo non è un numero");
                double y = 0.0;
            } catch(NullPointerException ex){
                double y = 0.0;
            } finally{
                return y;
            }
    Spero che qualcuno più esperto mi sappia dare una risposta

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    A parte il fatto che puoi fare la stessa cosa in modo più semplice usando un DocumentListener

    Comunque...

    Immagino che il tuo codice sia qualcosa del tipo:
    codice:
    public class TuaClasse 
    {
        ...
        
        ... tuoMetodo()
        {
            JTextField tA = new JTextField(5); 
            tA.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent ev) { 
                    r.setA(getValue(tA));
                }
            });
        }
    
        public double getValue(JTextField t) { ... }
    }
    Prova a cambiare in

    codice:
        ... tuoMetodo()
        {
            final JTextField tA = new JTextField(5); 
            tA.addActionListener(new ActionListener() { 
                public void actionPerformed(ActionEvent ev) { 
                    r.setA(TuaClasse.this.getValue(tA));
                }
            });
        }

    ps: tA è final perché è una variabile locale che deve essere acceduta da una classe interna anonima
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    doppio post, errore mio
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Grazie mille per la risposta e per il consiglio sulla classe DocumentListener

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.