Pimousse77
Messages postés42Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 6 janvier 2005
-
21 déc. 2004 à 12:14
Pimousse77
Messages postés42Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 6 janvier 2005
-
22 déc. 2004 à 14:44
Bonjour à tous,
je me permet de requérir votre aide car je suis tombé sur un os !
Je suis en train de travailler sur un JTable dans lequel j'ai mis des JComboBox, et il se trouve que pour l'instant lorsque l'on n'édite pas les cellules, qu'on est simplement en mode sélection, si l'on appuie sur une touche alphanumérique du clavier, on passe directement en mode édition.
Alors pour les champs "classiques" de type JTextField, il n'y a pas de problème, si on appuie sur une touche alpha numérique, la cellule passe automatiquement en mode édition et la lettre appuyée est saisie dans le JTextField. En revanche, pour les ComboBox, on passe bien en mode édition, mais la lettre tapée n'est pas saisie. Du coup quand on tape vite, il manque toujours la première lettre de chaque mot.
Quelqu'un a t'il une idée de la manière de résoudre celà ?
Je ne sais vraiment plus quoi faire.
Madvin
Messages postés123Date d'inscriptionmardi 5 août 2003StatutMembreDernière intervention26 août 20123 21 déc. 2004 à 16:03
Salut,
tu pourrais peut-être essayer de gérer ça de la façon suivante :
Lorsqu'un Combo n'a pas le focus et qu'une touche du clavier est appuyée, tu récupères l'événement (KeyPressed() dans KeyListener) et tu lui fais appeler une méthode donnerFocusCombo(JComboBob combo,char carac) qui insère le charactère carac dans la combo et qui lui donne le focus(paramètres : combo la JComboBox qui doit prendre le focus, et carac le caractère correspondant à la touche qui a été appuyée).
Voici un petit bout de code pour être plus explicite :
Dans le KeyListener de l'objet à partir duquel tu veux accéder à une combobox. (apparemment chez toi c'est à partir d'une cellule de la JTable) :
public void keyPressed(KeyEvent e)
{
....
....//combo est la JComboBox devant prendre le focus.
....
donnerFocusCombo(combo,e.getKeyChar());
}
Et voici une implémentation de la méthode donnerFocusCombo() :
Pimousse77
Messages postés42Date d'inscriptionmercredi 2 avril 2003StatutMembreDernière intervention 6 janvier 2005 22 déc. 2004 à 10:45
Ta réponse correspond à peu près à ce que j'avais l'intention de faire, seulement tu as oublié une donnée sur laquelle je n'ai pas assez appuyé : je ne veux commencer la saisie dans la cellule QUE si la touche du clavier pressée est une touche alphanumérique !!
Et c'est là que se pose mon problème, comment savoir si la touche appuyée correspond à un caractère alphanumérique ??