problème KeyListener
-
26-09-2019 - |
Question
Dans mon apllication je me sers d'un JPanel dans lequel je veux ajouter un écouteur de touche. Je l'ai fait. Mais il doesnot travail.
Est-ce parce que je suis en utilisant une SwingWorker de mettre à jour le contenu du panneau à chaque seconde.
Voici mon code pour mettre à jour le panneau
RenderedImage image = ImageIO.read(new ByteArrayInputStream((byte[]) get()));
Graphics graphics = remote.rdpanel.getGraphics();
if (graphics != null) {
Image readyImage = new ImageIcon(UtilityFunctions.convertRenderedImage(image)).getImage();
graphics.drawImage(readyImage, 0, 0, remote.rdpanel.getWidth(), remote.rdpanel.getHeight(), null);
}
La solution
Le JPanel
a le focus clavier?
Je vous suggère d'utiliser le InputMap
et WHEN_IN_FOCUSED_WINDOW
ou quelque chose de similaire. Extrait de Comment utiliser la clé Manchettes:
Les cartes d'entrée WHEN_IN_FOCUSED_WINDOW de tous les composants activés dans la fenêtre ciblée sont recherchés. Parce que l'ordre de recherche des composants est imprévisible
Cela a très robuste pour moi. Jetez un oeil à mon autre post pour plus d'informations et des exemples de code réel:
ou ce tutoriel: Swing: Comprendre carte d'entrée / action
question connexe: