Problème de Focus

sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010 - 19 juin 2010 à 00:16
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010 - 19 juin 2010 à 13:51
Voilà donc j'ai un problème tout bête mais tant que ça car ça fait quelques jours que je bloque dessus.

J'ai une JFrame tout simple qui doit créer un Canvas pour lancer un jeu.

J'ai simplement un label et un bouton dans ce JFrame, bouton qui crée le Game.

Lorsque j'arrive dans mon Canvas je n'ai pas le focus et donc le KeyListener ne capte aucun évènement.

J'ai pourtant dans le construteur de mon Game

this.setFocusable(true);
this.requestFocus();


Avec ce bout de code j'identifie qui à le focus :
KeyboardFocusManager focusManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
            focusManager.addPropertyChangeListener(
                new PropertyChangeListener() {
                    public void propertyChange(PropertyChangeEvent e) {
                        String properties = e.getPropertyName();
                        if (("focusOwner".equals(properties)) && (e.getNewValue() != null)) {
                            Component component = (Component)e.getNewValue();
                            String name = component.getName();
 
                            System.out.println(name + " a pris le focus");
                        }
                    }
                }
            );
 
 
            System.out.println(panel.isFocusOwner());
            System.out.println(focusManager.getFocusOwner());


Et en fait c'est toujours le JFrame précédent, ou le bouton du JFrame.

J'ai essayé de rendre non focusable JFrame et bouton de la première fenêtre à ce moment là, aucun élément à le focus quand j'arrive dans le Canvas

System.out.println(focusManager.getFocusOwner());


Est égal à "null".

Si quelqu'un à une idée, parce que j'ai tout essayé

3 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
19 juin 2010 à 07:10
Je ne suis pas certain que ca règle ton problème mais essaye de remplacer .requestFocus() par .requestFocusInWindow();
0
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
19 juin 2010 à 11:06
Non ça ne règle pas d'ailleur j'ai essayé de plusieurs façon

            this.setEnabled(true);
            this.setFocusable(true);
            this.requestFocus();
            this.requestFocusInWindow();


C'est un truc de fou la gestion des focus en Java
0
sebkill25 Messages postés 10 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 19 juin 2010
19 juin 2010 à 13:51
Je précise que lorsque je lance le Game de manière autonome (pas créer par une autre JFrame) il à bien le focus !

En fait c'est comme si le focus restait dans le JFrame précédent sachant que j'ai mis tous les éléments non focusable et que le Canvas n'arrive pas à reprendre le focus.
0
Rejoignez-nous