PDA

Visualizza la versione completa : [JAVA] Prendere un valore numerico da un JTextField


Nunkij
29-01-2006, 23:06
Salve a tutti, ho un problema che per molti di voi sar banale. Ho un campo dell'interfaccia swing in cui devo aggiungere un valore numerico. Quando lo raccolto uso NONMECAMPO.getText() e provo a fare una conversione col parse.Int() per mi d una ClassCastException come errore a run time. Come posso fare a fare una cosa del genere?

unomichisiada
30-01-2006, 00:03
Posta codice...

Nunkij
30-01-2006, 00:12
/* ### CONTROLLO ERRORI ### */
String strErrMsg="";
String strRiver=getNomeFiume().getText().trim();
String strLivGuard=getLivGuard().getText().trim();
String strSorgente=getSorgente().getText().trim();
String strFoce=getFoce().getText().trim();
String strContinente= (String ) getContinenti().getSelectedItem() ;
Hashtable htContinenti=getHTContinenti();

int iLivGuard=0;
int iContinenteId=0;

String strContinenteId =(String) htContinenti.get(strContinente);
iContinenteId = Integer.parseInt(strContinenteId);

String strValidateRiverResponse=validateRiverName(strRive r);
String strValidateLivGuardResponse=validateLivGuard(strLi vGuard);
String strValidateSorgenteResponse=validateSorgente(strSo rgente);
String strValidateFoceResponse=validateFoce(strFoce);


int iLivGuard=0;
int iContinenteId=0;

String strContinenteId =(String) htContinenti.get(strContinente);
iContinenteId = Integer.parseInt(strContinenteId);


String strValidateLivGuardResponse=validateLivGuard(strLi vGuard);




/* DA CORREGGERE */
if (strValidateLivGuardResponse==null){
iLivGuard=Integer.parseInt(strLivGuard);
}else{

strErrMsg=strErrMsg.concat(strValidateLivGuardResp onse);
}
/* == fin qui main */

Altro metodo

/* VALIDIAMO IL LIVELLO DI GUARDIA */
public String validateLivGuard(String strLivGuard){
String strErrMsg=null;
int iLivGuard=0;

//try{
iLivGuard=Integer.parseInt(strLivGuard);

if (iLivGuard<MIN_LIVGUARD){
strErrMsg="Il valore del livello di guardia troppo basso.
";
}else if(iLivGuard>MAX_LIVGUARD){
strErrMsg="Il valore del livello di guardia troppo alto.
";
}

/* }catch(NumberFormatException nfe){
strErrMsg="Il valore del livello di guardia deve essere un numero.
";
}*/




return strErrMsg;
}

Nunkij
30-01-2006, 00:17
Ok copiando il codice ho beccato un errore!
Ora il problema fare in modo che l'hashtable mi restituisce l'id del continente che io prendo dalla combobox.
Il problema sempre una ClassCastException.
L'hashtable e tutti i riferimenti ai vari campi sono salvati come attributi in quanto passati al costruttore e recuperati con metodi get che ho omesso.

unomichisiada
30-01-2006, 00:30
Ti dico subito che non credo l'errore sia nella ParseInt per quella se qualcosa non la digerisce ti lancia una NumberFormatException non un ClassCastException. Purtroppo il codice che hai postato (oltre ad essere formatatto in maniera pessima dai tag code non so perch) incompleto e quindi non posso fare delle prove.Diciamo che l'ideale sarebbe che tu scrivessi un piccolo programmino giocattolo funzionante in cui riproduci il problema e posti il codice di quello, altrimenti cos al volo non ti so dire di pi perch come ti ho detto il problema non credo sia il ParseInt

Nunkij
30-01-2006, 19:31
Posso anche postati tutta la classe ma il problema che un actionlistener di un dialog di una classe che crea un'interfaccia. Devo metterti tutte le classi?

unomichisiada
30-01-2006, 20:55
Originariamente inviato da Nunkij
Posso anche postati tutta la classe ma il problema che un actionlistener di un dialog di una classe che crea un'interfaccia. Devo metterti tutte le classi?
No te l'ho detto scrivi una programma giocattolo con usolo Jtextfield posizionato dove capita e cerca di riptodurre il problema, poi posti quello.

Loading