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

Composants Java Discussion :

[JTable]Problème de statégie pour update de cellules


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut [JTable]Problème de statégie pour update de cellules
    Bonjour à tous,
    je développe une petite appli pour mes loisirs (je suis en train de virer geek!) dans laquelle j'utilise une JTable que l'utilisateur doit remplir. Mon problème vient du fait que je souhaiterai détecter un évènement de sélection d'une combobox dans une cellule afin de remplir d'autres cellules de la même ligne automatiquement. Or il me semble que pour modifier des cellules par évènement, il faut passer par le modèle de la table.
    Le hic, c'est que le modèle, c'est l'utilisateur qui le remplit!

    Du coup, je ne sais comment faire:
    - créer un modèle avec des objets vides qui seront modifiés selon l'édition par l'utilisateur?
    - ne pas avoir de modèle? mais alors comment gérer les évènements?

    Bref, je suis encore trop novice en swing pour me dépatouiller facilement...
    Je ne demande pas forcément du code en réponse mais plutôt un aiguillage d'architecture. Merci de vous pencher sur mes soucis

  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,

    Selon tes besoins, un simple TableModelListener peut faire l'affaire : à chaque fois qu'une ligne est modifiée, il appelle une méthode du TableModel écrite par toi qui modifie la ligne (attention aux appels cycliques du Listener quand même).

    Si tu veux être plus réactif, tu peux utiliser un ActionListener sur la JComboBox, qui appelle la même méthode du TableModel. Je crois qu'il y aura une différence.

    Après, il faut que tu étudies bien l'ordre des choses : quelles infos l'utilisateur met dans la JTable, et ce que ça te permet de faire. Que doit il se passer si des cellules de la ligne sont vides ?
    "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 averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Citation Envoyé par xavlours
    à chaque fois qu'une ligne est modifiée, il appelle une méthode du TableModel écrite par toi qui modifie la ligne
    Comme je souhaite cibler sur une cellule, je pense que je vais m'orienter vers un ActionListener sur la JComboBox qui appellera la méthode du TableModel. Merci pour le coup de main
    Par contre, j'ai encore une question: il me faut un TableModel, ça paraît clair, mais la table n'est-elle pas censée se remplir selon les données qu'il y a dans le modèle? hors à la base, il n'y a rien dans le modèle, puisque c'est l'utilisateur qui remplit les données... J'ai dû louper qq chose dans la construction d'une JTable...
    En tout cas, merci encore du coup de main, je vais voir ce que je peux faire.

  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
    J'avais complètement oublié, mais tu peux aussi passer par le TableModel, c'est ce qu'il y a de plus propre et réutilisable : ça ne dépend pas de la (ou les) JTable ou du TableCellEditor.
    Il suffit d'hériter de DefaultTableModel, et de surcharger la méthode setValueAt, afin de faire en sorte que toute modification d'une cellule modifie aussi les cellules qui lui sont liées (en appelant super.setValueAt).

    Le TableModel est l'objet qui contient les données de la JTable. Une JTable sans TableModel ça n'existe pas. A la base, un DefaultTableModel est vide (zéro lignes, zéro colonnes). Mais tu as des méthodes pour ajouter des lignes ou des colonnes (par exemple avec un JButton). Et grâce au TableModelListener, toute modification faite en appelant les méthodes d'un DefaultTableModel sera immédiatement répercutée sur les JTable qui affichent ce TableModel.
    "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 averti
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 55
    Par défaut
    Alors désolé pour cette réponse ultra tardive...
    Je viens de me remettre dessus, et en effet l'utilisation du modèle et de la méthode setValueAt() me parait bien élégante, d'autant plus que ça marche nickel!
    Merci bien pour ces éclairages.

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

Discussions similaires

  1. [XL-2010] Problème avec macros pour "éclatement de cellule"
    Par Dubbleu dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/06/2013, 15h53
  2. Problème pour centrer une cellule
    Par Gizmil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 05/09/2007, 16h09
  3. Problème pour verrouiller une cellule
    Par aJavaDeveloper dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/07/2007, 11h02
  4. [JTable] Problème pour rafraichir
    Par jaoued dans le forum Composants
    Réponses: 3
    Dernier message: 20/07/2005, 16h21
  5. problème pour updater une BD
    Par yoda_style dans le forum ASP
    Réponses: 6
    Dernier message: 17/03/2005, 11h56

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