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 - Bean meilleure solution ?


Sujet :

Composants Java

  1. #1
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut JTable - Bean meilleure solution ?
    Bonjour,
    Eh bien je fais appel à votre aide afin de sauvegarder le reste de cheveux que je m'arrache depuis quelque temps (il ne m'en reste guère).

    Voilà j'ai des Beans que j'aimerais plugger sur un JTable et je cherche la meilleure solution... Pas facile à trouver.
    Mes beans sont très simples, ils contiennent des chaines de caractère, des entiers, rien de complexe. J'ai des méthodes pour y accéder... rien de plus classique.

    Bien sûr j'ai trouvé la solution de convertir mes beans en tableaux d'objet, et à partir de là je peux faire un affichage avec les méthodes classiques. Mais si l'on change les données du bean, j'aurais aimé voir une modification à l'écran, par événement.

    N'existe-til pas de méthodes pour mapper les colonnes d'un tableau (ou d'un vecteur) avec les colonntes d'un JTable ?

    Si vous connaissez de bonnes solutions, ça m'intéresse
    Bonne journée à tous

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Et encore une chose : existera-t-il des solutions plus simples dans Java 6 ?

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Précision, je veux utiliser SWING, pas de SWT

    Encore une chose, j'utilise Netbeans avec Matisse. Mais s'il faut reswitcher sous Eclipse, c'est toujourd possible.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Je ne suis pas sûr de bien comprendre ton problème... mais peut-être devrait tu te tourner vers les TableModel et ses implémentations...

    a++

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Hello !
    Mon problème est simplement de faire correspondre le plus facilement possible les différentes propriétés de mon objet au modèle de la JTable, s'il était possible de les associer directement sans passer par des vectors ou des tableaux[]... Je trouverait ça super cool.

    Comme les valeurs de certaines tables pourront être modifiées par le serveur d'appli, j'imaginais qu'il serait intéressant de pouvoir appliquer les modifications dès qu'une de mes propriétés changeraient, et seulement sur la cellule du tableau concernée, simplement par événement... Je demande peut-être trop...

    Comme je vais avoir beaucoup de tables à faire,je cherche la meilleure solution avant de m'embarquer dans l'implémentation.

    Voilà
    Merci

  6. #6
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Comme te l'as dit adiGuba il faut que tu regarde du coté de AbstractJTable. Un Jtable devrait toujours être associé à un AbstractJtable personnalisé pour le type d'objet à afficher.
    http://java.sun.com/docs/books/tutor...able.html#data

  7. #7
    Membre éprouvé Avatar de nicgando
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 128
    Par défaut
    Ton TableModel pourrait être une liste de reference vers tes beans (tous de la même classe bien sûr) et tu associes à chaque colonne de ta JTable une propriété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    ...
    private List beans = new LinkedList();
    ...
    public Object getValueAt(int row, int col) {
        MyBean bean= (MyBean) this.beans.get(row);
        switch (col) {
        case 0:
          return new Double(bean.getProperty0());
        case 1:
          return new Double(bean.getProperty1());
        case 2:
          return new Double(bean.getProperty2());
        case 3:
          ...
        default:     
          return null;
        }
      }
    ...
     public void setValueAt(Object obj, int row, int col) {
        MyBean bean = (MyBean ) this.beans.get(row);
        try {
          switch (col) {
          case 0:
            bean.setProperty0(obj);
            break;
          case 1:
            bean.setProperty1(obj);
            break;
          default:
       }
    }
    ...
    Ainsi ton model et tes bean sont modifiés.
    Par contre il te reste le cas ou ton bean est modifié et ou tu dois mettre à jour ta table

  8. #8
    Membre Expert
    Avatar de narmataru
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 548
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 548
    Par défaut
    Il faudrait mettre un listener sur le bean. Ainsi dès qu'une methode setter est appelée, alors on fait appelle aux listener pour leur dire de mettre àjour leur affichage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public interface class MyBeanListener{
         public void valueChanged(MyBean source);
    }
    Ainsi dans les setter de ton bean tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public void setVal1(Integer i){
         this.val1 = new Integer(i);
         this.valueChanged();
    }
     
    protected void valuechanged(){
        for(MyBeanListener lst : listeners){
             lst.valueChanged(this);
        }
    }
     
    public void addMyBeanListener(MyBeanListener lst){
        listeners.add(lst);
    }
    Puis lorsque tu crée ton model pour la Jtable, tu le fait implementer MyBeanListener. dans sa méthode valueChanged(...) tu fait appelle à la méthode fireXXXX adéquate. Puis tu l'ajoute dans tous les bean que tu veux afficher.

    Il y a surement une solution meilleur mais c'est une piste.

  9. #9
    Membre éclairé

    Profil pro
    Coach Agile
    Inscrit en
    Décembre 2005
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Coach Agile

    Informations forums :
    Inscription : Décembre 2005
    Messages : 316
    Par défaut
    As-tu essayé de te tourner vers des Frameworks qui te facilitent cette gestion, tels que JGoodies binding, genesis ou autres ?

  10. #10
    Membre très actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Février 2006
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2006
    Messages : 380
    Par défaut
    Merci pour vos réponses, je vais essayer. Je vous dirai ce que je trouve le plus chouette ! (et je mettrai le tag résolu)

    jproto, j'ai essayé les JGoodies, ça ne m'a pas complètement convaincu (d'ailleurs je ne sais plus pourquoi), je ne connaît pas l'autre framework...
    Jai toujours peur avec les framework que ça ne soit pas compatible avec tous les systèmes.

    A+

Discussions similaires

  1. Quelles est la meilleur solution?
    Par le lotus dans le forum Flash
    Réponses: 2
    Dernier message: 31/01/2006, 15h53
  2. [eCommerce] Meilleure solution pour ecommerce
    Par llax dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 23/12/2005, 22h03
  3. meilleure solution pour implementation
    Par shirya dans le forum C++
    Réponses: 2
    Dernier message: 20/12/2005, 22h46
  4. meilleur solution pour créer un document imprimable???
    Par martimacfly dans le forum XML/XSL et SOAP
    Réponses: 26
    Dernier message: 08/07/2004, 11h09
  5. [Conception] Meilleures solutions pour gérer le multilangage
    Par scorpiwolf dans le forum Général Java
    Réponses: 3
    Dernier message: 06/07/2004, 17h11

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