2010-02-17 25 views
2

J'ai un TextField.PhoneNumber mais je voudrais filtrer le caractère "+". En d'autres termes, j'ai besoin d'une nouvelle contrainte pour TextField. Existe-t-il un moyen de définir une nouvelle contrainte avec TextField?Comment filtrer les clés dans MIDP TextField?

Que diriez-vous empêcher les clés de vélo sur un téléphone mobile dans un MIDP?

+0

'+' est un préfixe standard pour les codes de pays. Pourquoi voulez-vous le filtrer? – finnw

+0

Mon client a une exigence spéciale. Le cyclage des clés ralentit les utilisateurs. – sk560

Répondre

1

Il pourrait ne pas ce que vous voulez vraiment. Cependant, MIDP ne prend pas en charge la règle de contrainte de modification comme vous le souhaitez. Donc, je suggère HACK pour votre but.

Que diriez-vous utiliser ItemStateListener pour vérifier si champ de texte contient la chaîne que vous souhaitez filtrer et si cette chaîne est existez, champ de texte de changement avec force.

Le code pourrait être ressemble ci-dessous:

// set item state listener 
form.setItemStateListener(this); 

// check if text field contains invalid string 
// then replace it 
public void itemStateChanged(Item item) { 
    if (item == getTextField()) { 
     TextField t = (TextField)item; 
     String s = t.getString(); 
     // + is invalid string 
     int pos = s.indexOf("+"); 
     if (pos != -1) { 
      t.setString(s.substring(0, pos) + s.substring(pos + 1)); 
     } 
    } 
} 
+0

Assez cool. Votre solution fonctionne. Merci. Cependant, je dois prolonger la forme sur une classe séparée pour le faire fonctionner. Maintenant, ça ne joue pas bien avec le reste du code. Nous rapporterons bientôt ici. – sk560