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 :

[JXtreeTable] Modifier le contenu


Sujet :

AWT/Swing Java

  1. #1
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut [JXtreeTable] Modifier le contenu
    Bonjour,

    J'ai un petit problème sur une partie de mon programme, en gros j'ai une JXTreeTable et je voudrai en changer le contenu, i.e. la vider et la re-remplir.
    Quand j'applique mon code j'ai le message d'erreur suivant :

    Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: org.jdesktop.swingx.JXTreeTable$TreeTableModelAdapter cannot be cast to com.aaa.TableModel.CompteTreeTableModel
    at com.aaa.ihm.ActionComptes$16.actionPerformed(ActionComptes.java:829)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    Ma ligne en cause (829) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((CompteTreeTableModel) tableCompte.getModel()).vide();
    J'ai fait un treeTable model que voici :

    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
    public class CompteTreeTableModel extends DefaultTreeTableModel {
    	public static final int COMPTE_COL = 0;
    	public static final int NOTE_COL = 1;
    	public static final int NUMERO_COL = 2;
    	public static final int ID_COL = 3;
     
    	private TreeNode node;
    	private String[] colonnes = {"Compte","Note","",""};
     
    	public CompteTreeTableModel(TreeNode node) {
    		super(node);
    		this.node = node;
    	}
     
     
    ..............
     
    	/**
             * Vide le contenu de l'arbre
             *
             */
    	public void vide(){
    		node = null;
    	}
    	/**
             * remplie l'arbre 
             *
             */
    	public void remplie(List<Compte> liste, List<Titre_Compte> listeT_C){
                    //créer un DefaultMutableTreeNode à partir de listes
    		node = Comptes.construitArbreCompte(liste, listeT_C, false);
    		fireTreeNodesChanged(node, new TreePath[]{new TreePath(node)}, null, null);
    	}
    Je suis tout ouïe à toutes les critiques et/ou suggestions, qui pourraient résoudre mon problème.

    MERCI d'avance.

  2. #2
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Il te dit qu'il n'arrive pas à caster le modèle de la table (tableCompte.getModel()) en CompteTreeTableModel.

    Ca veut dire que le modèle de la JXTreeTable n'est pas un CompteTreeTableModel.

  3. #3
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Voila l'instantiation de ma table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JXTreeTable tableCompte = new JXTreeTable(new CompteTreeTableModel(Comptes.construitArbreCompte(liste,listeT_C,true)));
    la classe CompteTreeTableModel avec le constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public class CompteTreeTableModel extends DefaultTreeTableModel {
     
    	public CompteTreeTableModel(DefaultMutableTreeNode node) {
    ...
    et le construitArbreCompte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public static DefaultMutableTreeNode construitArbreCompte(List<Compte> liste,List<Titre_Compte> listeT_C, boolean affTitreCompte){
    ...
    Je comprends pas, y'a quoi qui cloche??? Pourtant ma table s'affiche bien avec les colonnes définie dans mon CompteTreeTableModel et affiche bien les objets suivant le getValueAt défini dedans.

    J'en ai marre je vais me pendre!!

  4. #4
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Essaie d'afficher la classe du modèle pour voir ce qui cloche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(tableCompte.getModel().getClass());

  5. #5
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Il m'affiche bien la meme classe que dans le message d'erreur...
    org.jdesktop.swingx.JXTreeTable$TreeTableModelAdapter au lieu de com.aaa.TableModel.CompteTreeTableModel

    Donc c'est dans ma création que ca va pas.

  6. #6
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    et si tu essaie avec getTreeTableModel ?

  7. #7
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    Yep!!!!

    Merci !!!!!!!!!!!!!!!!!!


  8. #8
    Membre éclairé Avatar de grabriel
    Inscrit en
    Septembre 2006
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 946
    Par défaut
    J'étais tellement content que j'en ai oublié l'origine de mon message qui est comment modifier le contenu d'un JxTreeTable.
    Ce que j'ai fait et qui ne fonctionne pas :

    Suivant un certain choix (ici des jradiobutton) je modifie le contenu de mon JXTreeTable, en lancant vide qui met mon noeud à null et remplie, qui le remplie avec des listes.
    Le problème se situe au niveau de l'affichage de mon JXTreeTable qui ne se réactualise pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public void vide(){
    		node = null;
    	}
     
    	public void remplie(List<Compte> liste, List<Titre_Compte> listeT_C){
    		System.out.println(liste.size());
    		node = Comptes.construitArbreCompte(liste, listeT_C, false);
    		fireTreeStructureChanged(node, new TreePath[]{new TreePath(node)}, null, null);
    	}

    En affichant la taille de ma liste j'ai bien le nombre d'enregistrement conrrespondant à l'option coché mais le contenu du tableau ne change pas!!!

    j'ai essayé d'actualiser ma table avec un updateUI mais ca change rien, et le fireTree n'a pas l'aire de vouloir fonctionner.

    Merci


    [EDIT]
    J'ai trouvé d'ou pouvait venir l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public CompteTreeTableModel(DefaultMutableTreeNode node) {
                    super(node);
    		noeud = node;
                    //attribue noeud au lieu de super (node)
    	}
    dans mon constructeur je lui refile le noeud de l'instanciation et après dans vide et remplie je travail sur noeud donc c'est pour ca que ca ne fonctionne pas donc comment faire pour remplacer super(node) par noeud = node et attribuer noeud au lieu et place de node.

    Mon raisonnement n'est peut etre pas bon... en tout cas je continue dans cette voie.
    [/EDIT]


    [EDIT]
    J'ai trouvé une autre solution qui fonctionne.
    En cliquant sur un buttonradio je relance la page avec un parametre et ca m'affiche mon jxtreetable avec les données choisies.
    [/REEDIT]

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

Discussions similaires

  1. [Upload] Modifier le contenu d'une liste box automatiquemen
    Par Phenomenium dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2006, 21h42
  2. Modifier le contenu d'un DBEdit [query]
    Par Askarod dans le forum Bases de données
    Réponses: 15
    Dernier message: 08/12/2005, 14h47
  3. modifier le contenu de ma base
    Par dolphi dans le forum ASP
    Réponses: 2
    Dernier message: 22/08/2005, 17h17
  4. Réponses: 20
    Dernier message: 01/06/2005, 09h37
  5. modifier le contenu d'une table avec innerHTML
    Par francon81 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 31/05/2005, 09h02

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