Salut a tous,
j'arrive pas a faire marcher un key listener tout bete alors que j'ai pas eu de probleme pour les boutons, mon menu et la sourie....
La classe pricipale du programme (une sorte de controleur) est PercuXML :
Dans le constructeur de la Window qui est une JFrame j'ai ajoute le keyListener :
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 public class PercuXML implements ActionListener, MouseListener, KeyListener { private Window window; private Score score; private Reader scoreReader; private StemManager stemManager; private CursorManager cursorManager; .................... public void keyTyped(KeyEvent e) { System.out.println("pressed"); if (e.getKeyCode()==KeyEvent.VK_UP) { System.out.println("up"); if (noteSelected != null) noteSelected.increasePitch(); } updateBeats(score); window.getScorePanel().repaint(); } }
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 public Window(Score score, PercuXML percuXML) { scorePanel = new ScorePanel(score); scorePanel.addMouseListener(percuXML); requestFocusInWindow(); addKeyListener(percuXML); scoreScrollPane = new JScrollPane(scorePanel); ............................................. setExtendedState(this.MAXIMIZED_BOTH); /** setFocusable(true); isAlwaysOnTop(); */ setVisible(true); }
Et la, rien ne se passe, meme le message "pressed" n'apparait pas quand j'appuie sur une touche donc l'evenment n'est pas pris en compte.
J'ai beau cherche, j'ai essaye de refiler le focus a d'autres composants graphiques comme le ScorePanel.
Je comprend vraiment pas. Je sens l'erreur debile comme l'oublie de retour a la ligne dans le Manifest qui m'a fait perdre un temps monstre.
Toute idee est la bienvenue.
Partager