Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

requestFocusInWindow et multiple JPanel superpose

1 réponse
Avatar
willy
Bonjour,

Actuellement, je d=E9veloppe une application en Java
et je rencontre quelques soucis notamment avec le focus
donc voila mon probl=E8me:

J'ai une JFrame principale et des JPanel qui lui sont superpos=E9s
dans chaque JPanel, j'ai diff=E9rents JTextField, JButton, ...
mais c'est principalement des JTextField

J'ai une fonction qui permet de donner le focus =E0 une JTextField:
public static void myRequestFocusInWindow(final JTextField field) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
field.requestFocusInWindow();
}
});
}

Mais j'ai remarqu=E9 que quand j'avais que 2 (ou moins) JPanel
superpos=E9(s)
le focus est donn=E9 correctement
mais d=E8s lors que j'atteins 3 JPanel, le focus reste sur le JTextField
de la 2e JPanel
ce qui signifie que le focus n'est pas donn=E9 correctement.

Malheureusement, je ne peux pas me passer de ces JPanel superpos=E9s
donc je souhaiterais savoir comment r=E9soudre ce probl=E8me.

J'ai bien une piste mais elle demande confirmation:
- je crains qu'on ne puisse pas empiler les appels =E0 invokeLater de
SwingUtilities

Merci d'avance pour votre aide

1 réponse

Avatar
willy
On 8 déc, 17:49, willy wrote:
Bonjour,

Actuellement, je développe une application en Java
et je rencontre quelques soucis notamment avec le focus
donc voila mon problème:

J'ai une JFrame principale et des JPanel qui lui sont superposés
dans chaque JPanel, j'ai différents JTextField, JButton, ...
mais c'est principalement des JTextField

J'ai une fonction qui permet de donner le focus à une JTextField:
public static void myRequestFocusInWindow(final JTextField field) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
field.requestFocusInWindow();
}
});
}

Mais j'ai remarqué que quand j'avais que 2 (ou moins) JPanel
superposé(s)
le focus est donné correctement
mais dès lors que j'atteins 3 JPanel, le focus reste sur le JTextField
de la 2e JPanel
ce qui signifie que le focus n'est pas donné correctement.

Malheureusement, je ne peux pas me passer de ces JPanel superposés
donc je souhaiterais savoir comment résoudre ce problème.

J'ai bien une piste mais elle demande confirmation:
- je crains qu'on ne puisse pas empiler les appels à invokeLater de
SwingUtilities

Merci d'avance pour votre aide



bon ben apparemment personne ne semble connaître l'origine du problème
mais j'ai encore une question concernant toujours ce problème
j'ai constaté que la fonction requestFocusInWindow retourne true
alors que le focus a vsiblement pas marché
donc je voulais savoir comment je peux connaître l'évolution du focus
comme ca je pourrais comparer le retour de requestFocusInWindow
et la véritable évolution du focus
Merci.
Willy