Donner le focus à une zone de texte d'une fenêtre modale

Signaler
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
-
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
-
Bonjour à tous, :)
J'ai une fenêtre, qui contient un JTextArea, qui, lorsqu'il gagne le focus ouvre une autre fenêtre :
JTextArea zoneTexte = new JTextArea();
zoneTexte.addFocusListener(new FocusListener() {
	@Override
	public void focusGained(FocusEvent e) {new Edition(titre, zoneTexte);}

	@Override
	public void focusLost(FocusEvent arg0) {}
});


Et j'ai donc une classe Edition :
public class Edition extends JDialog {
	public Edition(String titre, final JTextField zoneTexte) {
		setTitle(titre);
		setModal(true);
		JTextArea txtContenu = new JTextArea(zoneTexte.getText());
		getContentPane().add(txtContenu)
		JButton btnValider = new JButton("Valider");
		getContentPane().add(btnValider);
		setVisible(true);
		txtContenu.requestFocus();
	}
}


A l'ouverture de la fenêtre Edition, je n'arrive pas à donner le focus à txtContenu. Si j'enlève setModal(true), ça fonctionne, mais si la fenêtre est modale, ça ne fonctionne plus.

Avez-vous une idée d'où ça vient et comment faire pour arriver à donner le focus ??
Merci d'avance de votre aide :)

2 réponses

Messages postés
600
Date d'inscription
samedi 20 mai 2006
Statut
Membre
Dernière intervention
8 juillet 2016
11
Salut,

mieux vaut tard que jamais ;-)

Concernant les gestions de focus, c'est toujours un peu tricky...

deux choses:
1. Quand tu étends une classe n'oublie pas d'appeler le super constructeur... (super(...);)

2. au niveau de la demande de focus pour ton textArea, il s'agit bien d'une DEMANDE... Ce qui veux dire qu'en théorie, le système peut toujours "refuser" la demande. Ensuite, je crois que le focus est tout de suite "volé" par la frame en temps que tel...

tu peux toujours essayer de changer les ordres de focus au niveau de ton dialog et faire en sorte que le premier composant à recevoir le focus est le text area...
Autre possibilité, tu demandes le focus pour le text area quand ton dialog gagne le focus...

Bonne chance
Messages postés
145
Date d'inscription
dimanche 15 février 2009
Statut
Membre
Dernière intervention
22 février 2021
3
Finalement, entre-temps, j'ai changé la conception de mon appli et je n'utilise plus la fenêtre modale.
Mais merci quand même pour les infos, c'est toujours bon à savoir.