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
1 2 3
|
this.setFocusable(true);
this.requestFocus(); |
Avec ce bout de code j'identifie qui à le focus :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
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é
Partager