IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AWT/Swing Java Discussion :

[JXTable] Champs éditables directement


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut [JXTable] Champs éditables directement
    Bonjour,

    J'utilise une JXTable qui est éditable par l'utilisateur.
    Lorsque je clique sur la touche TAB du clavier, je parcours les éléments de chaque ligne.

    Cependant, je dois quand même double-cliquer sur la case en question pour pouvoir l'éditer.

    Est-il possible de faire pour que en pressant sur TAB, j'aille sur la case d'à coté et que je puisse directement l'éditer ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Bonjour,

    le comportement d'une JTable (et j'en suis certain d'une JXTable aussi) lorsqu'on appuie sur TAB est défini dans les InputMaps et l'ActionMap. Voici un tutoriel.


    Il faut que tu récupères la clé qui est associée au KeyStroke de TAB dans l'InputMap, et tu pourras l'utiliser pour récupérer l'Action associée. Il te suffit de remplacer cette action par la tienne qui fera quelque chose du genre :
    - exécuter l'ancienne action (pour sélectionner la cellule suivante)
    - si la JXTable a le focus (l'ancienne action pourrait faire passer le focus dans un autre composant)
    - éditer la cellule actuellement sélectionnée (méthodes editCellAt, getSelectedRow/Column)
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre éclairé
    Profil pro
    100
    Inscrit en
    Juillet 2007
    Messages
    585
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : 100

    Informations forums :
    Inscription : Juillet 2007
    Messages : 585
    Par défaut
    Merci pour le tuto.

    Ce que j'aimerais en fait c'est que la case soit éditable directement en tout temps, c'est a dire que dès qu'elle est sélectionnée (suite à l'appui de TAB ou en ayant cliqué une seule fois dessus, ou en ayant pressé sur la touche haut du clavier par exemple).

    Actuellement, je dois faire un double clic sur une case pour pouvoir insérer des données dedans....
    Elle ne doit pas forcément être éditable juste quand on clique sur Tab.

    Je m'étais surement mal expliqué.

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Ah, dans ce cas tu peux peut-être te diriger vers un ListSelectionListener qui écoute le ListSelectionModel de ta JXTable ? A chaque changement de sélection, il appelle editCellAt dans un SwingUtilities.invokeLater (je ne sais pas si c'est nécessaire, mais ça ne fera pas de mal).
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    Bonjour,

    J'ai un peu le même problème.

    En redéfinissant la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valueChanged(ListSelectionEvent e)
    de ListSelectionListener je ne détecte pas un changement de case dans la même ligne. Par contre si je change de ligne il passe 2 fois dans la fonction.

    J'ai ajouté l'écouteur sur le modèle de sélection :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_table.getSelectionModel().addListSelectionListener(new MyTableSelectionListener());
    Je ne vois pas ce qu'il manque.....

    Merci d'avance

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    259
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Octobre 2005
    Messages : 259
    Par défaut
    je ne détecte pas un changement de case dans la même ligne
    En fait si, j'ai remarqué qu'il fallait différencier entre les lignes et les colonnes.

    Par contre, je passe toujours 2 fois dans la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valueChanged(ListSelectionEvent e)
    et je ne comprend pas pourquoi. Si qqun pouvait m'éclairer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. CListCtrl avec champs éditables
    Par fantomchris dans le forum MFC
    Réponses: 6
    Dernier message: 01/06/2010, 12h00
  2. Intégrer un champ éditable avec while
    Par Poisson Rouge dans le forum Langage
    Réponses: 2
    Dernier message: 18/09/2007, 15h33
  3. [C#] Récupérer champ éditable d'un DetailsView
    Par BigMike dans le forum ASP.NET
    Réponses: 2
    Dernier message: 10/07/2007, 17h59
  4. Tester la valeur d'un champ en direct live
    Par gedeon555 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 24/08/2006, 17h53
  5. fenêtre avec champs éditables
    Par LFC dans le forum Windows
    Réponses: 2
    Dernier message: 13/09/2003, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo