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 :

[DefaultTreeCellRenderer] Augmenter la taille du label


Sujet :

Composants Java

  1. #1
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut [DefaultTreeCellRenderer] Augmenter la taille du label
    Bonjour à tous !

    J'ai créé mon propre TreeCellRenderer en héritant de DefaultTreeCellRenderer et j'aimerais, pour certaines lignes, leur ajouter du texte (en fait les mettre entre parenthèses) sauf que le label ne semble pas se redimensionner et du coup mon texte est tronqué à la fin, remplacé par "...".

    J'ai essayé d'augmenter un peu la taille en passant par les différentes sizes (minimum, maximum, preferred, size) mais ça n'a pas bougé.

    J'imagine que le comportement par défaut du CellRenderer est de ne pas ajuster sa taille puisqu'elle n'est pas censée changer, histoire d"utiliser moins de processeur.

    Comment pourrai-je y remédier ?

    Je vous remercie d'avance pour votre aide

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Le JTree n'utilise pas la taille du renderer pour calculer la taille de l'affichage mais il fait l'inverse, il utilise l'affichage pour dimensionner le renderer donc c'est à toi de modifier la taille avec setRowHeight.

  3. #3
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Visiblement j'ai répondu un peu vite et en relisant ton message j'ai l'impression que c'est plus un problème de mise à jour du texte qu'un problème d'affichage pur.
    Si tu cherches à mettre à jour le texte d'un nœud (le modifié alors qu'il est déjà affiché), il faut passer par le modèle qui indiquera à l'arbre de se mettre à jour. Le renderer n'a qu'un rôle de figurant dans cette affaire, regarde plutôt comment tu mets à jour tes données et plus particulièrement ton modèle qui dans ce cas, est à la base du processus de mise à jour de l'affichage.

  4. #4
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut
    Je suis un peu perdu là. C'est mon renderer qui ajoute (ou non) des parenthèses à certaines lignes.

    Le modèle reste inchangé.

  5. #5
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    C'est mon renderer qui ajoute (ou non) des parenthèses à certaines lignes.
    C'est bien lui et visiblement il le fait mais le problème est qu'il le fait tout seul dans son coin, l'arbre n'ai pas informé d'où apparition des "...".

    Je suis un peu perdu là
    Moi aussi, ce que j'ai compris de ton problème en lisant entre les lignes, c'est que tu as un arbre dont certains noeuds changent d'état ce qui se traduit par l'ajout de parenthèses au niveau de l'affichage.
    Dans ce cas, à vu de nez (pas vu de code*), je sens plus un modèle un peu fainéant (changement d'état non signalé) qu'un renderer qui semble fonctionner.

    *Avant d'envoyer une montagne de code, indique plutôt le fonctionnement normal que tu attends.

  6. #6
    Membre éclairé Avatar de Julien Bodin
    Homme Profil pro
    Devops
    Inscrit en
    Février 2009
    Messages
    474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Février 2009
    Messages : 474
    Par défaut
    En réalité j'utilise un CheckBoxTree pour cocher/décocher des items dans ma liste.

    En plus de ça je veux pouvoir associer trois états à ces items : coché, décoché et non spécifié.
    Les CheckBoxTree utilisent des tristateCheckBox mais le troisième état des checkbox est réservé aux noeuds dont tous les enfants ne sont pas cochés.

    Donc sur mes items à moi, qui n'ont pas d'enfants, je ne dispose que de deux états de checkbox.

    Donc j'ai créé un JPopupMenu qui me permet par un clic droit sur un item de le passer en non-spécifié.

    Ces états ne sont pas stockés dans les items eux-même mais dans une Map qui associe à un item son état (via une enumération).

    J'ai ajouté du code aux différents évènements pour que :
    - Lors du clic sur une checkbox, en fonction de si elle est cochée ou non on fait passer son état à coché/décoché
    - Lors d'un clic droit sur un item un popup apparait avec un JMenuItem qui lorsqu'on clic dessus fait passer l'état à non-spécifié

    De même, si toutes ces actions sont effectuées sur un noeud parent on répercute les états sur les enfants.

    A la base, je voulais que mon renderer fasse passer les items en rouge quand ils étaient non-spécifiés, et ça fonctionne (même si je dois forcer le repaint() du Tree).
    Mon chef préfère des parenthèses, donc j'ai changé mon renderer pour qu'il ajoute une parenthèse au début de la string représentant l'item et une autre à la fin.

    Celle du début s'affiche bien mais à la fin du label j'ai "..." ce qui arrive quand un label est trop petit pour afficher tout son texte.

    Lorsqu'un item est déjà non-spécifié au moment de la création de l'arbre j'ai bien les deux parenthèses et le texte n'est pas tronqué.

    Voilà pour la description du problème. Il y a quelque chose qui fait que les labels servant à l'affichage ne sont pas redimensionnés et je ne sais pas ce que c'est.

  7. #7
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    j'ai changé mon renderer pour qu'il ajoute une parenthèse au début de la string représentant l'item et une autre à la fin.
    Celle du début s'affiche bien mais à la fin du label j'ai "..." ce qui arrive quand un label est trop petit pour afficher tout son texte.
    Les parenthèses sont là, donc ça fonctionne, ce n'est pas ici qu'est le problème.

    Lorsqu'un item est déjà non-spécifié au moment de la création de l'arbre j'ai bien les deux parenthèses et le texte n'est pas tronqué.
    Mais inversement, si tu supprimes les parenthèses la zone de sélection est mal dessinée (trop grande) ?

    Je reste convaincu que c'est le modèle qui pose problème (modification d'état => modification des données , au moins vu de l'arbre).
    Il faut que ton modèle envoie au minimum un événement "treeNodesChanged" pour que la mise à jour est lieu.

Discussions similaires

  1. [MFC] Augmenter la taille des fonts
    Par OverLorD34 dans le forum MFC
    Réponses: 3
    Dernier message: 06/04/2006, 10h28
  2. comment augmenter la taille d'un tableau ?
    Par salseropom dans le forum C
    Réponses: 5
    Dernier message: 16/12/2005, 12h47
  3. augmenter la taille d'une tablespace?
    Par sali dans le forum Oracle
    Réponses: 1
    Dernier message: 01/12/2005, 15h52
  4. [Redo log] : augmenter la taille des fichiers
    Par user_oracle dans le forum Oracle
    Réponses: 3
    Dernier message: 29/11/2005, 19h49
  5. []Augmenter la taille de la pile des appels ?
    Par oncle ervil dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 10/05/2005, 09h29

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