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

SWT/JFace Java Discussion :

Modifier les colonnes dans un TreeViewer


Sujet :

SWT/JFace Java

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Modifier les colonnes dans un TreeViewer
    Bonjour,

    J'essaie d'enlever des colonnes pour en remettre d'autres dans un TreeViewer.
    Je fais un dispose() sur chacune des colonnes (sur le Tree) que je veux enlever, et je rajoute les nouvelles colonnes avec des TreeColumnViewer.

    donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for (TreeColumn column : viewer.getTree().getColumns()) {
         column.dispose();
    }
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    treeviewercolumn = new TreeViewerColumn(viewer, SWT.NONE);
    Au refresh, j'ai systématiquement une NullPointerException:

    at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:135)
    at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:911)
    at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:97)
    at org.eclipse.jface.util.SafeRunnable$3.run(SafeRunnable.java:154)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
    at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:991)
    at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:466)
    at org.eclipse.jface.util.SafeRunnable$3.run(SafeRunnable.java:154)
    at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:199)
    at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2026)
    at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:806)
    at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:781)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
    at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:755)
    at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:627)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1463)
    at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:816)
    at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1446)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1368)
    at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:390)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1330)
    at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1435)
    at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:251)
    at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1606)

    Le résultat à l'écran montre que les entêtes des colonnes sont OK, mais évidemment tout l'arbre n'est pas affiché...

    J'ai cherché un peu partout, mais je n'ai rien trouvé sur le sujet. Quelqu'un aurait une idée pour m'éviter de reconstruire toute la Shell ?

    Merci.

    Eclipse 3.3.1
    Java 5
    Windows XP

  2. #2
    Rédacteur

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    Juillet 2005
    Messages
    14 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2005
    Messages : 14 974
    Points : 72 948
    Points
    72 948
    Par défaut
    Salut,

    Peux-tu préciser ton intérêt de supprimer les TreeColumn ?

    Mickael

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Pourquoi supprimer des TreeColumn
    Oui, je voudrais faire varier les colonnes (en particulier le nombre) en fonction de mon modèle, de façon dynamique. En changeant de modèle (un setInput() différent), je voudrais que la table s'adapte, du coup je dois supprimer certaines colonnes et en remettre d'autres.

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bon... j'ai trouvé finalement... je faisais mes bidouillages sur les colonnes après avoir fait les notifications au TreeViewer du CellModifier et du LabelProvider.
    En plaçant la composition des colonnes avant (et en re-affectant le Cell Modifier et le LableProvider), ca marche. Je suppose que le CellModifier et/ou le LabelProvider se sert de la définition des colonnes, c'est logique après tout !
    Merci.

  5. #5
    Membre régulier
    Inscrit en
    Août 2008
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 142
    Points : 71
    Points
    71
    Par défaut
    Bonjour à vous Viteazul et Keulkeul,

    Apres plusieurs jours de recherche, je suis tombé sur ce post dont le sujet semble être équivalent au problème auquel je suis confronté en ce moment.

    Comme pour Viteazul, j'ai envie mettre à jour mon viewer(en occurence un tableViewer). Cette mise à jour implique non seulement les données, mais aussi les colonnes(nombre et libellés). J'ai donc décidé de "disposer" toutes les anciennes colonnes(ce qui marche à priori), de les reconstruire et de setter un nouvel input à mon viewer. Malheuresement pour moi, j'obtiens également un "java.lang.NullPointerException"; avec pour précisions le fait que j'en obtiens autant que les lignes que j'avais dans ma table.

    Je présume à la suite de la lecture des posts ci dessous, que ce la est lié à l'agencement de mes méthodes. Mais j'arrive pas à trouver d'ou vient le pb.

    Merci de votre aide.

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

Discussions similaires

  1. Script pour Modifier les metadonnées dans des TIFF
    Par Airmoi dans le forum Windows
    Réponses: 2
    Dernier message: 04/11/2006, 14h12
  2. Intervertir les colonnes dans un MSFlexGrid
    Par kooki dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 26/07/2006, 17h49
  3. comment modifier les widgets dans une fenètre??
    Par afrikha dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 14/10/2005, 14h48
  4. modifier les texte dans un <span>
    Par Flobel dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 03/12/2004, 13h58
  5. Des colonnes dans un Treeview
    Par mr_langelot dans le forum Composants VCL
    Réponses: 6
    Dernier message: 28/07/2004, 09h52

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