2011-06-28 4 views
1

J'ai créé un champ de texte qui prend tous les caractères de l'utilisateur .. mais je veux désactiver l'espace pour que l'utilisateur ne puisse pas entrer dans l'espace ... help ??Gestion des événements clés J2ME

pin = new TextField("Pin#","",4,TextField.PASSWORD); 
+0

Je suis vraiment coincé avec ce gars d'aide problem.Plz – RNZN

Répondre

1

S'il s'agit d'un numéro de code PIN, vous devrez peut-être remplacer le paramètre constraints par TextField.NUMERIC | TextField.PASSWORD.

+0

l'application que je développe le client veut que le numéro de broche soit n'importe quel caractère mais pas espace – RNZN

+0

Si un autre caractère est acceptable, essayez 'TextField.EMAILADDR' ou' TextField.URL', ils ne doivent pas autoriser la saisie d'espaces. – funkybro

+0

Cela fonctionne mais le pavé qwerty est désactivé – RNZN

1

Implémentez l'interface ItemStateListener. Puis appelez this.setItemStateListener(this) dans le constructeur de formulaire. Implémentez la méthode itemStateChanged de sorte que si l'élément est celui qui vous intéresse, récupérez son contenu et testez-le s'il contient des espaces.

+0

Je pense que u n'a pas obtenu ma question .... Chaque fois que l'utilisateur appuie sur la touche de barre d'espace tout en entrant dans le champ de texte je veux afficher le message d'avertissement ... peut m'aider avec l'utilisation de keyevents ... thanx – RNZN

0

Dans mon cas, je crée un MIDlet et un formulaire qui contient un TextField. Et il fonctionne. Je ne sais pas pourquoi avez-vous dit que la solution que je vous ai donnée ne vous a pas fonctionné! Voici un exemple très simple que je donne (je l'ai créé et testé!):

package hello; 

import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 

public class HelloMIDlet extends MIDlet { 

    public Display display; 

    public HelloMIDlet() { 
     display = Display.getDisplay(this); 
    } 

    public void startApp() { 
     Form f = new F(display); 
     display.setCurrent(f); 
    } 

    public void pauseApp() { 
    } 

    public void destroyApp(boolean unconditional) { 
    } 

} 

package hello; 

import javax.microedition.lcdui.Alert; 
import javax.microedition.lcdui.AlertType; 
import javax.microedition.lcdui.Display; 
import javax.microedition.lcdui.Form; 
import javax.microedition.lcdui.Item; 
import javax.microedition.lcdui.ItemStateListener; 
import javax.microedition.lcdui.TextField; 

public class F extends Form implements ItemStateListener { 
    private TextField pin = new TextField("PIN :","",4,TextField.PASSWORD); 
    private Alert alert; 
    private Display disp; 
    public F(Display d) 
    { 
     super(""); 
     disp = d; 
     this.setItemStateListener(this); 
     this.append(pin); 
    } 
    public void itemStateChanged(Item item) { 
     if (item == pin) 
     { 
      for (int i=0; i<pin.getString().length(); i++) 
      { 
       if (String.valueOf(pin.getString().charAt(i)).equals(new String(" "))) 
        displayAlert(); 
      } 
     } 
    } 
    private void displayAlert() 
    { 
     alert = new Alert("Info","No space please !",null, AlertType.ERROR); 
     disp.setCurrent(alert, this); 
    } 
} 
+0

Java SDK ne prend pas this.setItemStateListener (this); ligne montre erreur ... merci pour l'aide neways – RNZN