2017-03-11 2 views
1

Supposons que nous ayons deux objets JButton avec des captures "Calculer" et "Quitter". Par souci de ne pas créer des classes mises en œuvre par ActionListener, nous hve toute la classe inplemented par ActionListener, et la méthode ActionPerformed ressemble à ceci:ActionListener JTextField Java

public void actionPerformed(ActionEvent e) { 

    if (e.getActionCommand().equals("Calculate")) 
     // do what "calculate" button does 
    else if (e.getActionCommand().equals("Exit")) 
     System.exit(0); 

} 

Ma question est si nous avons deux champs de texte (JTextField). Comment devrions-nous réécrire la méthode actionPerformed? Quelle est la méthode pour retourner le nom JTextField après que l'utilisateur touche la touche Entrée dans ce champ?

+0

Ecrivez une catégorie distincte pour votre application 'ActionListener'. Lorsque vous l'instanciez, injectez un JTextField dans le constructeur. Ensuite, votre méthode 'actionPerformed' a accès au champ de texte et peut appeler' getText() '. – byxor

Répondre

0

Par souci de ne pas créer des classes mises en œuvre par ActionListener ...

Vous ne devriez pas utiliser un seul auditeur. Au lieu de cela, vous devriez utiliser un écouteur distinct pour chaque fonction que vous voulez implémenter.

Ma question est ce que si nous avons deux champs de texte (JTextField).

Au lieu d'ajouter un ActionListener au champ de texte, vous pouvez ajouter un TextAction personnalisé. Le TextAction prend en charge une méthode getFocusedComponent() qui retournera le champ de texte qui a actuellement le focus. C'est ainsi que toutes les actions d'oscillation sont implémentées sur les composants de texte.

Pour un exemple simple, vous pouvez consulter: What text input component last had the focus?