Bonjour à tous.
J'ai un problème de focus dans certaines de mes applications nécessitant de tourner en arrière plan. je m'explique par un exemple concret :
Pour un chat de jeux, je veux pré-programmer des phrases que l'utilisateur peut attribuer aux boutons 1 à 9 du pavé numérique. Une fois cela fait, si l'on appui sur la touche correspondante, la phrase apparait en texte à l'endroit du curseur.
Cela ne pose pas de problème pour des applications fenêtrés, mais si par exemple je lance un jeu en plein écran, cela ne fonctionne plus. Or, c'est justement ce que je souhaiterais, que l'appuie sur les touches m'qffichent bien les phrases programmés dans le jeux...
Voici la creation de ma fenêtre (extends JFrame) :
et voici un des listener (je lui fais afficher "yes" pour les tests... )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 private void creationFenetre() throws IOException{ setTitle("League Of Legend : Macro Manager"); setMinimumSize(new Dimension(600,340)); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); setLocationRelativeTo(null); BorderLayout bl = new BorderLayout(); setLayout(bl); this.jpAcceuil = new JPanel(){ protected void paintComponent(Graphics g){ Image img = new ImageIcon(this.getClass().getResource("/LolMacrobackground.jpg")).getImage(); g.drawImage(img, 0, 0, getWidth(), getHeight(), this); g.setColor(Color.GRAY); g.drawString("mickael.bettembourg@gmail.com", 1, getHeight()-5); } }; this.jpAcceuil.setLayout(null); add(this.jpAcceuil,bl.CENTER); setComponent(); lolmc = new LolMacroController(); lolmc.autoLoad(); setVisible(true); event(); this.jpAcceuil.requestFocus(); }
Donc pour le moment le listener écoute toutes les touches, le temps d'arriver régler le problème de focus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 private void event() { this.jpAcceuil.addKeyListener(new KeyListener(){ @Override public void keyPressed(KeyEvent e) { System.out.println("yes"); }
Quelqu'un sait-il comment je peux faire pour que même si j'ai une appli en plein écran, le listener capte quand même l'appui sur une touche ?
Partager