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

yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 20 nov. 2014 à 14:25
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 - 17 déc. 2014 à 15:09
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

cormandyr Messages postés 600 Date d'inscription samedi 20 mai 2006 Statut Membre Dernière intervention 8 juillet 2016 11
17 déc. 2014 à 09:22
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
0
yoanpg Messages postés 156 Date d'inscription dimanche 15 février 2009 Statut Membre Dernière intervention 20 janvier 2024 3
17 déc. 2014 à 15:09
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.
0
Rejoignez-nous