java swing: Focus perdu sur la touche entrée de l'événement
J'ai un bouton dans ma boîte de dialogue. Après avoir appuyé sur la touche enter dans ce dilog, les actions affectée à ce bouton est appelé un par un.
public void buttonAction1() { }
....
public void buttonAction2() { }
Dans ma boîte de dialogue j'ai aussi un champ de texte sur lequel l'accent a perdu événement est écouté. Chaque fois qu'initialement l'accent est à l'intérieur que textfield, je clique sur l'onglet ou à l'aide de la souris je clique sur le bouton, l'accent a perdu événement est appelé et ouvre une popup. Cette fenêtre permet de définir la valeur à l'intérieur de la zone de texte. Cette valeur sera utilisée par action sur le bouton appuyez sur.
public void focusLostAction() { }
Maintenant la question est que, lorsque le focus se trouve à l'intérieur du champ de texte et j'ai appuyer sur la touche enter, l'accent a perdu événement n'est pas appelé. Si le Pop-up n'est pas ouvert et et de valeurs propres ne sont pas définies à l'intérieur de cette zone de texte. mais en raison pour entrer la clé de l'événement, une action sur que particulier bouton est appelé et cette action est impossible de trouver la bonne valeur à l'intérieur de la zone de texte.
À l'intérieur de la méthode d'action, qui sont appelés à entrer la clé de l'événement, j'ai essayé de mettre l'accent sur le bouton manuellement à l'aide de:
public void buttonAction1() {
button.requestFocusInWindow();
}
public void buttonAction2() {
//do the remaining task
}
J'ai aussi essayé d'utiliser, bouton.requestFocus;
Je m'attendais à ce que le réglage de la mise au point manuellement sur ce bouton pour appeler lâche le focus du champ de texte et de se concentrer perdu événement peut être appelé (ce qui est mis en œuvre en séparer swing thread de travail). Mais ça ne fonctionne pas. S'il vous plaît laissez-moi savoir, Si vous avez fait face à cette question tout à l'heure et la solution pour le même.
Merci.
Exactement où vous avez écrit
button.requestFocusInWindow();
, car si vous appuyez sur ENTER
clé à l'intérieur de la JTextField
puis le actionPerformed(...)
méthode sera appelée et de ne pas le focusLost(...)
Et si vous écrivez la ligne ci-dessus à l'intérieur de la actionPerformed()
attaché avec le JTextField
, alors seulement le focusLost()
méthode permettra d'obtenir de l'appel.J'ai mis à jour la requête comme suggéré par Guillaume. Suis-je le faire dans incprrect?
Il n'y a rien dans votre question, qui est une SSCCE.
OriginalL'auteur user613114 | 2012-07-17
Vous devez vous connecter pour publier un commentaire.
Ici deuxième
JTextField
agit de la façon dont vous le souhaitez. Essayer vos mains sur cet exemple de code :Ce que vous aviez spécifié, c'est juste la méthode, mais exactement où vous utilisez, il est le véritable chose à regarder, c'est pourquoi une complète SSCCE, sera d'une grande aide pour en dire plus 🙂
Chers nlcE, je comprends votre préoccupation. En fait le problème est que, Le champ de texte est une partie de la sous-vue. et le bouton est dans la vue parent. Je suis novice pour balancer et je travaille sur ce gros morceau de code, qui est développé à l'aide de classes étendue de swing. C'était la reson je ne pouvais pas donner SSCCE. Avec ton exemple, je viens de modifier le code du bouton ajouter.grabFocus(). Et il est travaillé pour moi maintenant. Je m'excuse de ne pas fournir SSCCE pour ce scénario. Je vous marquera solution que d'y répondre, car elle donne des idée sur quoi exactement. Merci ver beaucoup.
Vous êtes la PLUPART de BIENVENUE et de GARDER le SOURIRE 🙂 Heureux de savoir que ma réponse ne vous a aidé quelque part 🙂
OriginalL'auteur nIcE cOw
de gain et de perte focus à partir de l'image en java Swing Application
}
OriginalL'auteur Vishal Chaudhari