Derniers sujets
Utiliser le clavier uniquement dans un JPanel
SOS internautes :: Aide informatique :: :: Programmation :: JAVA
Page 1 sur 1
Utiliser le clavier uniquement dans un JPanel
Un des problèmes lié à l'utilisation d'une structure en JFrame-JPanel-JLabel vient du fait que, par défaut, il est impossible d'utiliser le clavier dans un seul panel bien précis, il est en effet uniquement possible d’implémenter un KeyListener dans un JFrame ce qui peut poser quelques problèmes ou tout simplement ne pas vous arranger.
Heureusement pour vous, il existe bel et bien une méthode permettant de "donner la possibilité" d'utiliser un KeyListener uniquement dans un JPanel, il s'agit en fait de le rendre "focusable", et cela se fait en deux toutes petites lignes de codes dans votre JFrame, plutôt pratique mais pas forcément facile à trouver, voici cette méthode.
Supposons que votre JPanel se nomme "panneau", au moment de le définir dans votre JFrame avant de l'ajouter à votre container, copiez les lignes ci-dessous :
Mettez ensuite votre panneau dans votre container (via contentPane.add( panneau ); pour rappel ) et mettez un KeyListener standard dans votre JPanel, et là.. miracle, ça marche.
En fait c'est très simple à expliquer, de base donc seul le JFrame est "visé" par les autorisations d'utilisation du clavier, il faut ainsi "transférer" en quelque sorte ces autorisations.
Ainsi, la première ligne rend votre JPanel "focusable" et la seconde demande de lui donner un "focus"; votre JPanel se trouve ainsi visé en priorité et c'est chez lui que votre application ira chercher les actions définies par la méthode de reconnaissance du clavier.
Heureusement pour vous, il existe bel et bien une méthode permettant de "donner la possibilité" d'utiliser un KeyListener uniquement dans un JPanel, il s'agit en fait de le rendre "focusable", et cela se fait en deux toutes petites lignes de codes dans votre JFrame, plutôt pratique mais pas forcément facile à trouver, voici cette méthode.
Supposons que votre JPanel se nomme "panneau", au moment de le définir dans votre JFrame avant de l'ajouter à votre container, copiez les lignes ci-dessous :
- Code:
panneau.setFocusable( true );
panneau.requestFocus();
Mettez ensuite votre panneau dans votre container (via contentPane.add( panneau ); pour rappel ) et mettez un KeyListener standard dans votre JPanel, et là.. miracle, ça marche.
En fait c'est très simple à expliquer, de base donc seul le JFrame est "visé" par les autorisations d'utilisation du clavier, il faut ainsi "transférer" en quelque sorte ces autorisations.
Ainsi, la première ligne rend votre JPanel "focusable" et la seconde demande de lui donner un "focus"; votre JPanel se trouve ainsi visé en priorité et c'est chez lui que votre application ira chercher les actions définies par la méthode de reconnaissance du clavier.
Sujets similaires
» Utiliser le clavier dans un applet en Java
» Jouer un son dans un JPanel
» Remplacer un JPanel par un autre
» Mettre une couleur de fond à un JPanel
» Clavier virtuel (vista/seven)
» Jouer un son dans un JPanel
» Remplacer un JPanel par un autre
» Mettre une couleur de fond à un JPanel
» Clavier virtuel (vista/seven)
SOS internautes :: Aide informatique :: :: Programmation :: JAVA
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Lun 19 Déc - 11:24 par bigblaireau
» Présentation
Lun 19 Déc - 11:10 par bigblaireau
» probleme incredimail
Mar 22 Mar - 19:06 par vanille57540
» (supprimé)
Ven 18 Mar - 20:06 par louis1806
» présentation
Ven 18 Mar - 10:47 par louis1806