Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
vclassine
"Olivier" wrote in message news:<40328d2e$0$24935$...
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener { // Rajout des méthodes qui vont bien... }
mais il ne reçoit rien ? Bonne nouvelle: c'est normal :-)
Le fait de faire implémenter KeyListener à ta sous-classe de JPanel ne la fait pas écouter ses propres évènement clavier.
Toute classe qui implémente KeyListener est juste capable d'écouter n'importe quel JPanel (entre autres, ça doit concerner bcp d'autres composants), sans plus de config elle n'écoute rien, elle en est juste capable.
Pour qu'ils écoute les KeyListener doivent être ajoutées au composants à écouter.
En l'occurence il faudrait faire un truc du style :
this.addKeyListener(this);
Par contre le fait que ton panel s'écoute est probablement un mauvais choix de conception...
Comment faire ?
Merci, Olivier
"Olivier" <olivier.marechal@laposte.net> wrote in message news:<40328d2e$0$24935$626a14ce@news.free.fr>...
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener {
// Rajout des méthodes qui vont bien...
}
mais il ne reçoit rien ?
Bonne nouvelle: c'est normal :-)
Le fait de faire implémenter KeyListener à ta sous-classe de JPanel ne
la fait pas écouter ses propres évènement clavier.
Toute classe qui implémente KeyListener est juste capable d'écouter
n'importe quel JPanel (entre autres, ça doit concerner bcp d'autres
composants), sans plus de config elle n'écoute rien, elle en est juste
capable.
Pour qu'ils écoute les KeyListener doivent être ajoutées au composants
à écouter.
"Olivier" wrote in message news:<40328d2e$0$24935$...
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener { // Rajout des méthodes qui vont bien... }
mais il ne reçoit rien ? Bonne nouvelle: c'est normal :-)
Le fait de faire implémenter KeyListener à ta sous-classe de JPanel ne la fait pas écouter ses propres évènement clavier.
Toute classe qui implémente KeyListener est juste capable d'écouter n'importe quel JPanel (entre autres, ça doit concerner bcp d'autres composants), sans plus de config elle n'écoute rien, elle en est juste capable.
Pour qu'ils écoute les KeyListener doivent être ajoutées au composants à écouter.
En l'occurence il faudrait faire un truc du style :
this.addKeyListener(this);
Par contre le fait que ton panel s'écoute est probablement un mauvais choix de conception...
Comment faire ?
Merci, Olivier
Sébastien BALLET
salut,
"Olivier" a écrit dans le message de news: 40328d2e$0$24935$
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener { // Rajout des méthodes qui vont bien... }
mais il ne reçoit rien ?
Comment faire ?
Merci, Olivier
C'est normal étant donné que par défaut l'état de focusabilité des JPanel est fixé à false. Pour rendre un JPanel focusable il faut utiliser la méthode setFocusable(boolean) :
public class MyFocusablePanel extends JPanel { public MyFocusablePanel() { super(); setFocusable(true); } }
Dès lors que ton JPanel est focusable, celui-ci est alors en mesure de recevoir les événement clavier. A ce niveau, tu as 2 solutions :
a) surcharger la méthode JPanel.processKeyEvent(KeyEvent). Cette méthode est héritée de Component :
public class MyFocusablePanel extends JPanel { public MyFocusablePanel() { super(); setFocusable(true); }
protected void ProcessKeyEvent(KeyEvent pEvent) { // traitement de l'événement. Attention a ne pas oublier de faire // un pEvent.consume() pour chaque événement devant être marqué // comme ayant été traité } }
b) implémenter l'interface KeyListener afin de traiter les événements clavier :
public class MyFocusablePanel extends JPanel implements KeyListener { public MyFocusablePanel() { super(); setFocusable(true); addKeyListener(this); }
public void keyPressed(KeyEvent pEvent) { }
public void keyReleased(KeyEvent pEvent) { }
public void keyTyped(KeyEvent pEvent) { } }
a+ seb
salut,
"Olivier" <olivier.marechal@laposte.net> a écrit dans le message de news:
40328d2e$0$24935$626a14ce@news.free.fr...
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener {
// Rajout des méthodes qui vont bien...
}
mais il ne reçoit rien ?
Comment faire ?
Merci, Olivier
C'est normal étant donné que par défaut l'état de focusabilité des JPanel
est fixé à false. Pour
rendre un JPanel focusable il faut utiliser la méthode setFocusable(boolean)
:
public class MyFocusablePanel extends JPanel
{
public MyFocusablePanel()
{
super();
setFocusable(true);
}
}
Dès lors que ton JPanel est focusable, celui-ci est alors en mesure de
recevoir les
événement clavier. A ce niveau, tu as 2 solutions :
a)
surcharger la méthode JPanel.processKeyEvent(KeyEvent). Cette méthode est
héritée
de Component :
public class MyFocusablePanel extends JPanel
{
public MyFocusablePanel()
{
super();
setFocusable(true);
}
protected void ProcessKeyEvent(KeyEvent pEvent)
{
// traitement de l'événement. Attention a ne pas oublier de faire
// un pEvent.consume() pour chaque événement devant être marqué
// comme ayant été traité
}
}
b)
implémenter l'interface KeyListener afin de traiter les événements clavier :
public class MyFocusablePanel extends JPanel implements KeyListener
{
public MyFocusablePanel()
{
super();
setFocusable(true);
addKeyListener(this);
}
"Olivier" a écrit dans le message de news: 40328d2e$0$24935$
Comment faire en sorte qu'un JPanel recoive les frappes claviers.
J'ai fait
class Panel extends JPanel implements KeyListener { // Rajout des méthodes qui vont bien... }
mais il ne reçoit rien ?
Comment faire ?
Merci, Olivier
C'est normal étant donné que par défaut l'état de focusabilité des JPanel est fixé à false. Pour rendre un JPanel focusable il faut utiliser la méthode setFocusable(boolean) :
public class MyFocusablePanel extends JPanel { public MyFocusablePanel() { super(); setFocusable(true); } }
Dès lors que ton JPanel est focusable, celui-ci est alors en mesure de recevoir les événement clavier. A ce niveau, tu as 2 solutions :
a) surcharger la méthode JPanel.processKeyEvent(KeyEvent). Cette méthode est héritée de Component :
public class MyFocusablePanel extends JPanel { public MyFocusablePanel() { super(); setFocusable(true); }
protected void ProcessKeyEvent(KeyEvent pEvent) { // traitement de l'événement. Attention a ne pas oublier de faire // un pEvent.consume() pour chaque événement devant être marqué // comme ayant été traité } }
b) implémenter l'interface KeyListener afin de traiter les événements clavier :
public class MyFocusablePanel extends JPanel implements KeyListener { public MyFocusablePanel() { super(); setFocusable(true); addKeyListener(this); }