Salut,
Il ne se passe rien, parce que tu crées un JTextField dont tu ne fais rien. Il faut le mettre dans un container à un moment donné, si tu veux le voir. En plus, tu le fais par actionPerformed, ce qui ne réagit pas au clic, mais à la validation de la saisie (enfin lorsqu'on tape entrée, je veux dire).
En plus, si ton évènement (pas l'actionPerformed mais le focusGained, ou le MouseListener.mouseClicked() à la rigueur, est sur le JTextField que tu voudrais voir modifié, là, tu crées un nouveau JTextField dont tu n'en fais rien (il ne remplace en aucun cas celui sur lequel tu as cliqué. Il faudrait supprimer l'ancien et le remplacer par le nouveau, ce qui n'est pas simple à cause du layout : pour le remplacer, on ne peut que l'enlever et ajouter le niveau, donc forcément à la fin, ce qui va saboter le formulaire si le jtextfield n'est pas déjà à la fin.
On pourrait supprimer le composant, puis tous ses suivants, en les mettant de côté, pour ajouter le nouveau, et ré-ajouter tous les suivants ensuite. En plus, il faudrait redonner le focus au nouveau champ, parce qu'un clic à la base ça donne le focus.
Bref, tout ça c'est bien compliqué : qu'est-ce que tu cherches à faire au juste ? Pourquoi créer un field lors du clic sur un field (lui ou un autre).
A noter que l'orientation n'est pas gérée : il faudrait ajouter
jTextField1.setComponentOrientation(ComponentOrientation.getOrientation(locale));
PS: ce serait intéressant par ailleurs de mettre un message dans la langue de la locale en cas de locale non supportée. Tu peux obtenir le nom de la langue dans la locale, par locale.getDisplayName(locale), par contre pour le reste du message, il faudrait passer par un ressource bundle, avec un message à paramètre (MessageFormat, ou String.format()).
Partager