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

    [JAVA] problema con NumberFormatException

    salve avrei un problema con una NumberFormatException
    ho una funzione in cui faccio l'assegnamento del contenuto di una textfield ad un intero all'interno di un blocco try-catch dove intecetto questa eccezione.
    nel caso in cui il valore inserito nella textfield non è un intero logicamente salta l'eccezione ed io lo risolvo visualizzando un messaggio di errore tramite JOptionPane.
    premetto che intercetto sia l'actionPerformed che il focusLost della textfield.
    il problema sta nel fatto che se inserisco un valore errato e clicco INVIO (azionando quindi l'acionPerformed) si arrabbia e mi fa vedere il JOptionPane vuoto senza bottoni ne messaggio e se cerco di chiuderlo con la X ne riapre immediatamente un altro.
    Strano! mentre se non clicco INVIO e cambio il focus cliccando da un'altra parte della finestra (e quindi azionando il focusLost) si comporta come voglio.
    Mi sapete spiegare come mai succede? Il problema lo risolvo tranquillamente non intercettando l'actionPerformed tanto il messaggio di errore melo fa vedere comunque appena la textfield perde il focus, però era solo per curiosità

    posto anche il codice per semplificare la spiegazione del problema
    codice:
    protected void txt_num_attori_actionPerformed(ActionEvent evt)
    { 
      txt_event(); 
    }
    protected void txt_num_attori_focusLost(FocusEvent evt)
    { 
      txt_event(); 
    }
    
    protected void txt_event()
    {
    		
      try
      {
        num_attori = Integer.parseInt(txt_num_attori.getText());
    			
        switch(num_attori)
        {
          ...	
          ...	
          ...
        }
      }
      catch(NumberFormatException ex)
      {
        JOptionPane.showMessageDialog(null, "Il numero deve essere intero!",   "Error", 2);
      }	
    }
    www.matteosteri.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    724
    Non so se è la soluzione ma per le messageDialog il primo ed ultimo parametro li setto così
    codice:
    JOptionPane.showMessageDialog(this,"Caricamento fallito","Warning",JOptionPane.WARNING_MESSAGE)

  3. #3
    no quello non centra niente, se ti guardi la documentazione JOptionPane.WARNING_MESSAGE è una costante intera equivalente a 2.

    secondo me il problema nasce nel listener della textfield ma non so per quale motivo.
    www.matteosteri.it

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Credo che, a questo punto, tu debba gestire non solo l'actionPerformed (che di solito non indica la pressione di INVIO, ma il click del mouse), ma anche il keyPressed del KeyListener.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it L'avatar di bobc
    Registrato dal
    Feb 2004
    Messaggi
    245
    Se ho capito esattamente il tuo problema, ti esce una JOptionPane senza pulsanti.
    Ti posso fornire questo pezzo di codice che ho scritto in un vecchio progettino per gestire preventivi per computer fatto da me a scopo didattico (a me ha funzionato)
    la this.qdaaggiungere è il JTextComponent a cui si riferisce

    try{
    quantita2=Integer.parseInt(this.qdaggiungere.getTe xt());
    }catch(NumberFormatException nfe){JOptionPane.showMessageDialog(this,"Errore quantita',immettere dati numerici","Attenzione",JOptionPane.WARNING_MESSAGE );
    this.setVisible(false);}

  6. #6
    grazie ma ho notato che funziona perfettamente anche gestendo solamente la focusLost.

    www.matteosteri.it

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.