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 :

Mettre en gras/couleur des chaînes dans des cellules d'une TableViewer ?


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut Mettre en gras/couleur des chaînes dans des cellules d'une TableViewer ?
    Bonjour,

    Nous utilisons un table viewer pour afficher des informations dans des cellules :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TableViewer viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);

    Et nous avons une classe héritant de LabelProvider pour afficher le contenu texte dans les cellules avec la méthode suivante :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     public String getColumnText(Object element, int colIdx) {
     
       return "du texte pour la cellule"
    }

    Comment faire pour afficher des éléments en gras ou en couleur dans le contenu d'une cellule ?

    Merci d'avance

  2. #2
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Je vais finir par croire que ne n'est pas possible de changer la couleur d'une partie d'un texte dans une cellule avec un TableViewer ?

    J'arrive seulement à changer la couleur du texte entier dans la cellulle

    Des idées pour colorer seulement une chaine de mon texte dans une cellule ?

  3. #3
    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
    Par défaut
    Salut,

    Ah la TableViewer, pas aussi flexible que le JTable de Swing.

    Je n'ai pas testé mais je pense que tu devrais utiliser des décorateurs pour ton LabelProvider.

    Essaye avec IFontDecorator et IColorDecorator. Le premier pour dire que c'est en gras et le second pour choisir ta couleur.

    Va faire un tour ici http://www.cct.lsu.edu/~rguidry/ecl3...r.html#line.27
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  4. #4
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    D'après ce que j'en vois les décorateurs permettent d'ajouter de l'information.

    Par exemple d'ajouter une balise <b> autour d'un mot dans une chaîne que j'aurais dans une cellule.

    Par contre pour ce qui est d'afficher mon mot en gras , c'est une autre affaire...

    Donc toujours pas de solution pour ça ?
    Merci d'avance pour vos idées.

  5. #5
    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
    Par défaut
    Salut,

    En fait, il s'agit des interfaces IColorProvider et IFontProvider qui permettent de modifier la couleur et la fonte. Je n'arrive pas trop à voir la nuance avec IColorDecorator et IFontDecorator (peut être avec les points d'extensions?)

    Bref, pour dire que ça fonctionne

    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
     
        class ViewLabelProvider extends LabelProvider implements
                ITableLabelProvider, IFontProvider, IColorProvider {
            public String getColumnText(Object obj, int index) {
                return getText(obj);
            }
     
            public Image getColumnImage(Object obj, int index) {
                return getImage(obj);
            }
     
            public Image getImage(Object obj) {
                return PlatformUI.getWorkbench().getSharedImages().getImage(
                        ISharedImages.IMG_OBJ_ELEMENT);
            }
     
            public Color getBackground(Object element) {
                return Display.getDefault().getSystemColor(SWT.COLOR_WHITE);
            }
     
            public Color getForeground(Object element) {
                return Display.getDefault().getSystemColor(SWT.COLOR_BLUE);
            }
     
            public Font getFont(Object element) {
                if (element instanceof String) {
                    if (((String)element).equals("One")) {
                        return new Font(Display.getDefault(), "Fixedsys", 10, SWT.BOLD);
                    }
                }
                return new Font(Display.getDefault(), "Fixedsys", 10, SWT.ITALIC);
            }
        }
    Il s'agit d'un code à l'arrache, basé sur le template généré par Eclipse.

    A faire ensuite

    viewer.setLabelProvider(new ViewLabelProvider());

    Mickael
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

  6. #6
    Membre Expert
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Par défaut
    Oui, mais avec ce code si je prends la méthode suivante :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            public Color getForeground(Object element) {
                return Display.getDefault().getSystemColor(SWT.COLOR_BLUE);
            }

    La couleur du texte à l'intérieur d'une cellule sera bleue.

    Et si par exemple j'ai dans une cellule le texte suivant : "le petit chien mange des bananes" et que je veux colorier en bleu le mot "petit" et uniquement ce mot (le reste en noir par exemple) aucun décorator ne pourra m'aider.

    D'autres idées ?

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

Discussions similaires

  1. Comment ajouter des séries dans des graphes sur des feuilles variables
    Par Molomarcopolo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/07/2012, 16h26
  2. Réponses: 2
    Dernier message: 12/04/2007, 17h12
  3. Manipuler des chaînes dans un tableau
    Par cirtey dans le forum C
    Réponses: 5
    Dernier message: 01/03/2007, 22h08
  4. effacer des caracteres dans chaque cellule d'une plage
    Par chamus dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/11/2006, 17h14
  5. [D6] Comment remplacer des chaînes dans un fichier ?
    Par fabien25 dans le forum Langage
    Réponses: 4
    Dernier message: 15/06/2005, 13h37

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