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

    Evitare valori errati su JTextField

    salve. Mi trovo a sbattere da giorno con il seguente problema:

    Devo impedire che vengano inseriti valori errati su alcune textfield (del tipo cifre che non superino determinati valori), per farlo genero un evento focuslost all'interno del quale verifico la correttezza del dato inserito. Se il dato risulta errato impedisco di passare alla text field successivo facendo uso del seguente metodo:

    private void txtPesoFocusLost(java.awt.event.FocusEvent evt) {
    NoLost(txtPeso);
    }

    codice:
    / 
    private void txtPesoFocusLost(java.awt.event.FocusEvent evt) {
    if (txtPeso.getText()< 1200){
    { SwingUtilities.invokeLater(new Runnable() {
     public void run() {
     txtPeso.setText(null);
     txtPeso.requestFocusInWindow();
     } }); 
    }
    }
    Il problema che il textfiled presenta il seguente metodo, causando così un loop.


    Spero di essere stato chiaro nella speigazione

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Quel codice è errato. Il metodo getText() ritorna un oggetto String, che non può ovviamente essere confrontato con un valore intero.

    La stringa va convertita:
    codice:
    // Ottengo la stringa della JTextField
    String value = txtPeso.getText();
    
    // La converto in intero
    int valoreIntero = Integer.parseInt( value );
    
    // Faccio eventuali confronti
    if (valoreIntero < 1200) {
       ...
    }
    Se poi setti a null il testo è peggio: piuttosto settalo alla stringa vuota.
    codice:
    txtPeso.setText( "" );
    Per il resto non entro nel merito: l'evento va consumato, prima di procedere alla richiesta di focus. Ed, in ogni caso, sarebbe più opportuno usare un validatore (vedi il metodo setInputVerifier() e, di conseguenza, la classe InputVerifier).


    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

  3. #3
    Grazie per la risposta.

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.