2011-02-11 5 views
0

On me confie une mission mais je suis totalement nouveau à Java (j'ai programmé en C++ et Python pendant deux ans). Donc, nous faisons l'interface graphique et, fondamentalement, nous avons étendu JFrame et ajouté quelques champs.Comment utiliser requestFocus dans une interface graphique Java JFrame?

Disons que nous avons un champ nommé "Texte 1" et "Texte 2". Lorsque l'utilisateur appuie entrer avec le curseur dans le texte 1, déplacer le focus au texte 2. J'ai essayé d'ajouter

private JTextField textfield1() { 

    textfield1 = new JTextField(); 
    textfield1.setPreferredSize(new Dimension(200, 20)); 

    textfield1.addActionListener(
          new ActionListener() { 
         public void actionPerformed(ActionEvent e) { 

          textfield1text = textfield1.getText().trim(); 
          textfield1.setText(textfield1text); 
          System.out.println(textfield1text); 

          textfield1.requestFocus(); 
         } 
        }); 

    return textfield1; 
} 

Mais cela ne fonctionne pas du tout. J'ai remarqué que requestFocus n'est pas recommandé, et à la place on devrait utiliser requestFocusWindows. Mais j'ai aussi essayé. Sur certaines lectures, il semble que je dois faire l'action du clavier et l'écoute? Mais mon professeur a dit qu'il ne nécessite qu'une ligne ...

+2

Si l'API indique que vous devez utiliser requestFocusInWindow(), pourquoi publier du code utilisant requestFocus(). Suivez la recommandation de l'API. – camickr

Répondre

3

Eh bien, vous avez textfield1.requestFocus(), mais votre description impliquerait que vous avez besoin de textfield2.requestFocus(). (c'est).

+1

+1 Un bon exemple pour les noms de champs significatifs. Aussi une note à l'OP: Il n'est généralement ni nécessaire ni une bonne idée d'étendre les conteneurs de niveau supérieur (JApplet à part). Au lieu de créer l'interface graphique dans un JPanel et l'ajouter au TLC (JApplet inclus). –

2

Une autre option pourrait consister à utiliser:

textField1.transferFocus(); 

De cette façon, vous n'avez pas besoin de connaître le nom du composant suivant sur le formulaire.

Questions connexes