Je construis une application en utilisant CodenameOne et je veux utiliser un TextField pour filtrer une longue liste d'éléments. J'ai essayé d'utiliser un DataChangedListener, comme proposé dans https://www.codenameone.com/javadoc/com/codename1/ui/TextField.html, mais cela ne déclenchera un événement qu'une fois que l'utilisateur a terminé l'édition (c'est-à-dire appuie sur la touche "Entrée"). Comment puis-je obtenir un événement pour chaque caractère modifié dans le champ de texte?Comment obtenir un événement pour chaque changement dans un CodenameOne TextField
2
A
Répondre
3
DataChangedListener
se déclenche pour chaque entrée de touche et non lorsque la touche Enter
est enfoncée (c'est pour actionListener
).
private String filterString = "";
...
filterTextField.addDataChangedListener((evt1, evt2) -> {
if (filterTextField.getText().trim().length() > 0 && !filterString.equalsIgnoreCase(filterTextField.getText().trim())) {
//perform your filter here
//revalidate your form
}
filterString = filterTextField.getText().trim();
});
Bonjour diamant, vous avez raison. L'événement s'est déclenché à chaque pression sur la touche, mais mon filtre n'a fonctionné correctement qu'une fois l'édition terminée car j'ai oublié de revalider/repeindre la liste. Merci, Frans. –
Vous pourriez upvote ceci et Mark comme réponse. – Diamond