Question

J'utilise la bibliothèque GWT-Ext pour la construction de GUI pour une webapp. Je voudrais traiter une ENTER appuyer sur la touche à l'intérieur de la NumberField.

Il devrait être comme ceci:

    final NumberField requiredHeight = new NumberField();
    requiredHeight.setValue(125);
    requiredHeight.setAllowBlank(false);
    requiredHeight.setAllowNegative(false);
    requiredHeight.setAllowDecimals(false);
    KeyListener listener = new KeyListener() {

        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode()==13)
                addPortlet(requiredHeight.getValue().intValue());
        }

    };
    requiredHeight.addKeyListener(listener);

Mais le code ne fait rien! Qu'est-ce que je fais mal? D'une manière générale, quelle est la meilleure façon d'ajouter un tel gestionnaire au champ?

Était-ce utile?

La solution

OK, résolu que enfin. Il y a une autre fonction de rappel à l'intérieur de KeyListener - componentKeyPress au lieu de keyPressed. Ceci est le code correct:

    KeyListener listener = new KeyListener() {
        @Override
        public void componentKeyPress(ComponentEvent event) {
            if(event.getKeyCode()==13)
            {
                addPortlet(requiredHeight.getValue().intValue());
            }
            super.componentKeyPress(event);
        }

    };
    requiredHeight.addKeyListener(listener);

Autres conseils

Certaines méthodes sont déconseillés, j'utiliser le code suivant sur mon formulaire de connexion:

    KeyDownHandler handler = new KeyDownHandler() {

        @Override
        public void onKeyDown(KeyDownEvent event) {
            if (event.getNativeKeyCode() == 13) {
                btnLogin.click(); 
            }
        }
    };
    tbLogin.addKeyDownHandler(handler);
    tbPassword.addKeyDownHandler(handler);

Enregistrement d'un écouteur de touche en fait l'auditeur enregistre 3 différents événements:. Key-up, clé appuyée et appuyer sur la touche, dont deux sont tout à fait inutile dans votre cas

Une solution plus compacte serait l'utilisation d'un écouteur générique, comme suit:
(Pardonnez-moi d'utiliser une classe d'auditeur anonyme, il est plus rapide encore est évidemment le même effet)

import com.extjs.gxt.ui.client.event.Events; 

requiredHeight.addListener(Events.OnKeyPress, new Listener<ComponentEvent>() {
    @Override
    public void handleEvent(ComponentEvent e) {
        if (e.getKeyCode()==13)
            addPortlet(requiredHeight.getValue().intValue());           
    }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top