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 :

Quelle est la différence entre un modele et tableCellRendere


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut Quelle est la différence entre un modele et tableCellRendere
    Bonjour à tous,

    J'aimerais insérer des cases à cocher dans un composant Jlist. Sur internet j'ai trouver des exemples qui permettent de réaliser cela.
    Mais j'ai pas envie d'intégrer bêtement ce code, car je n'aime pas ça.

    Actuellement j'affiche dans mon tableau que tu texte, donc pour cela, j'ai utilisé l'interface AbstractTableModel. Maintenant je dois ajouter des cases à cocher dans ce tableau, mais je ne sais pas comment faire.

    En fait je sais qu'il faut utiliser les classes TableCellRenderer et TableCellEditor, mais je n'arrive pas à comprendre leur fonctionnement.
    Je ne sais pas du coup si j'ai encore besoin de la classe AbstractTableModel.

    Si quelqu'un peut m'éclairer sur ce sujet, cela m'aiderais beaucoup!

    merci d'avance

  2. #2
    Membre expérimenté Avatar de schneidb
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    236
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 236
    Par défaut
    Le modèle c'est la partie donnée de la jtable.

    TableCellRenderer: c'est ce qui est utilisé pour afficher corretement la cellule.
    TableCellEditor: c'est ce qui est utilisé quand l'utilisateur met le focus sur cette cellule.

    J'espère avoir été clair

  3. #3
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut
    Oui, merci ta réponse à été clair, mais on peut afficher un composant JTable sans utiliser TableCellRenderer, non ?

  4. #4
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Je sais pas si tu connais le modèle MVC (Model View Controller), mais ca s'en rapproche... Renseigne toi

  5. #5
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Si tu peux, sans aucun problème, ta JList ne sera pas mise en forme (couleurs, fonts ...) c'est tout. Par contre utilises un model, c'est mieux...

  6. #6
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut
    non, je connais pas, mais je vais me renseigner sur ce sujet.

    En fait, je ne sais pas trop quand est ce qu'il faut utiliser un TableCellRenderer ?

    Comme je l'ai dit précédent, mon modèle permet d'afficher les données dans le composant JTable, donc je comprends pas pourquoi il faut utiliser un tableCellRenderer pour ajouter des cases à cocher.

    c'est bien compliqué le java!

  7. #7
    Membre éclairé Avatar de leminipouce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2004
    Messages
    754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2004
    Messages : 754
    Par défaut
    Mais non mais non, ce n'est pas si compliqué que ça le Java !

    Alors je récapépète :
    Tu as une table -ou une Liste, peu importe- qui doit afficher des choses. Soit tu travailles de manière statique et tu crées ta "Table" en la basant directement sur un jeu de données. Suivant les objets que tu vas utiliser tu le construira sur un tableau, un Vecteur ou je ne sais quoi encore. Soit tu crées une "Table" dynamique, et dans ce cas tu la construit non plus sur un Vecteur ou un Tableau, mais sur un modèle de données (TableModel...). Ensuite, pour ajouter ou suppprimer des données à ta table, tu ne travailles pas sur elle -ce n'est jamais qu'une représentation gaphique- mais sur son modèle de données. Il suffit que ton getValueAt() te renvoie la donnée que tu veux, pour quelle soit placée ou tu veux. Et si tu veux enregistrer les changements dans ta table, il te suffit d'utiliser la méthode setValueAt().
    Après, c'est à toi de trouver ce que tu veux renvoyer via le getValueAt() (données du BD, d'un tableau, d'un Vecteur...).
    Et comme ton modèle de données te permet de définir non pas la représentation de ta table à l'écran, mais son contenu, il te permet également de définir le nombre de colonne, leur noms, ainsi que le nombre de ligne ou encore la capacité qu'à ton utilisateur de modifier ou non les données.

    Une fois cette partie mise en place, tu vas t'intéresser à la représentation des données sur ton écran. Et par défaut une "Table" utilises la méthode toString() -hérité de Object- pour afficher le contenu d'une cellule.
    Grâce au TableCellRenderer tu vas pouvoir changer la façon dont sont rendus le contenus des cellules -affichage de pop-up.... Tu peux donc y définir les fonds de couleurs, le type d'affichage que tu veux -en gros ce que tu veux faire plutôt que d'appeler la méthode toString().

    Enfin, le CellEditor, c'est celui qui prend le relais, d'un point de vu graphique, quand l'utilisateur édite une cellule.

    Voilà.

    J'espère que ça clarifie un peu les choses.
    Je t'invite à aller voir directement sur le site de Sun si tu veux de très bon exemple sur le sujet. Tu as par exemple ici la façon d'utiliser les tables...

  8. #8
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Par défaut
    merci pour ta réponse, je comprends beaucoup mieux le concept, je vais aller voir sur le site de sun pour trouver des exemples et m'en inspirer.

    Merci encore

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/03/2014, 13h25
  2. Réponses: 12
    Dernier message: 01/06/2010, 16h57
  3. Réponses: 5
    Dernier message: 03/05/2005, 18h22
  4. Réponses: 11
    Dernier message: 31/01/2005, 17h48
  5. Quelle est la différence entre le float et le real ?
    Par Manson dans le forum Débuter
    Réponses: 3
    Dernier message: 10/08/2004, 17h26

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