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 :

Ligne de couleurs dans un Jtextpane.


Sujet :

AWT/Swing Java

  1. #1
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut Ligne de couleurs dans un Jtextpane.
    Bonsoir,

    J'aimerais savoir si il etait possible que je definisse un style a une partie du texte d'un JTextPane. et comment je dois m'y prendre (le plus simplement possible)

    Apparement les JTextPane acceptent le HTML ?

    et concernant l'ajout d'une ligne à la fin. Il y a t'il moins "bourrin" que ca :

    public void ajouter_ligne(String texte){
    liste_messages.setText(liste_messages.getText()+"\n"+texte);
    }

    MERCI de votre aide.

  2. #2
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    tu as de la chance, j'étais justement en train de faire une class qui dérive de JTextPane pour facilité un peu...

    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    import java.awt.Color;
    import javax.swing.Icon;
    import javax.swing.JComponent;
    import javax.swing.JTextPane;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyleContext;
    import javax.swing.text.StyledDocument;
     
    @SuppressWarnings("serial")
    public class JOTextPane extends JTextPane {
     
     private StyledDocument styledDocument = getStyledDocument();
     protected float COMPONENT_ALIGNEMENT = 0.82f;
     
     
     
     // Constructeur
     public JOTextPane() {
      super();
     }
     
     
     // Méthode pour générer le nom du style passé en paramètre
     private static String getNameStyle(boolean bold, boolean italic, int size, Color color) {
     
      StringBuffer sb = new StringBuffer();
     
      if(bold)  sb.append("1");
      else   sb.append("0");
      if(italic)  sb.append("1");
      else   sb.append("0");
         sb.append(size);
         sb.append(color.getRGB());
     
      return sb.toString();
     }
     
     
     // Méthode pour créer et récupérer le style passé en paramètre
     private Style getStyle(boolean bold, boolean italic, int size, Color color) {
     
      // Récupère le nom du style
      String styleName = getNameStyle(bold, italic, size, color);
     
      // On récupère le style (Si il n'existe pas on récupère null)
      Style style = styledDocument.getStyle(styleName);
     
      // Si le style existe on le retourne
      if(style != null) return style;
     
      // Si le style n'existe pas on le créer
      else {
     
       // Création du nouveau style
       Style styleDefaut  = styledDocument.getStyle(StyleContext.DEFAULT_STYLE);
       style     = styledDocument.addStyle(styleName, styleDefaut);
     
       StyleConstants.setBold(style, bold);
       StyleConstants.setItalic(style, italic);
       StyleConstants.setFontSize(style, size);
       StyleConstants.setForeground(style, color);
     
       return style;
      }
     }
     
     
     // Ajout un texte à la fin
     public synchronized void insertTextEnd(String texte, boolean bold, boolean italic, int size, Color color) throws BadLocationException {
      styledDocument.insertString(styledDocument.getLength(), texte, getStyle(bold, italic, size, color));
     }
     
     
     // Ajoute d'une icone à la place de la sélection
     public synchronized void insertIconSelect(Icon icon) {
      insertIcon(icon);
     }
     
     
     // Ajoute d'une icone à la fin
     public synchronized void insertIconEnd(Icon icon) {
      select(styledDocument.getLength(), styledDocument.getLength());
      insertIconSelect(icon);
     }
     
     
     // Ajoute d'un composant à la place de la sélection
     public synchronized void insertComponentSelect(JComponent c) {
      c.setAlignmentY(COMPONENT_ALIGNEMENT);
      insertComponent(c);
     }
     
     
     // Ajoute d'un composant à la fin
     public synchronized void insertComponentEnd(JComponent c) {
      select(styledDocument.getLength(), styledDocument.getLength());
      insertComponentSelect(c);
     }
    }

  3. #3
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Ca me semble tres complet mais etant debutant, malgré les commentaires, je comprends pas trop. Sachant que ca accepte le HTML, j'aurais aimé entourer mon message a "stylé" par des balises HTML et voila

    De plus c'est pour un programme que je présente et si je ne peux expliquer mon code, je suis dans la merde...

    MERCI quand même, je vais essayer de chercher et comprendre. Je pensais que c'etait plus simple quand même

  4. #4
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    moi je te déconseille d'utilisé de l'html... c'est peut etre pratique pour certain truc (par exemple dans un JLabel) mais dans un JTextPane ca devient assez rapidement lent...

    de plus java supporte une vielle version d'html


    pour la classe que je t'ai donnée tu peux l'utilisé comme ca:

    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
     
     
    // On utilise JOTextPane à la place de JTextPane
    JOTextPane pane = new JOTextPane();
     
     
     
     
    // Insertion d'un texte
     
    String texte = "Mon texte à insérer";
    boolean gras = true;
    boolean italic = false;
    int taille = 22;
    Color color = Color.BLUE
     
    pane.insertTextEnd(texte, gras, italic, taille, color);
     
     
    /*
    *
    * Tu as encore d'autre méthode pour ajouter une icone
    * ou un JComponent... je te laisse voir 
    *
    */

    Ce code n'est pas tout a fais fini, on pourrait encore ajouter des options pour le style du texte mais je n'ai pas encore fini... Mais pour le moment ca marche quand meme

  5. #5
    Membre confirmé
    Inscrit en
    Février 2006
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 197
    Par défaut
    Merci bien, mais si on me demande le code de la classe... je ne saurais l'expliquer pourtant il repond parfaitement a ce que je cherche. OK, je vais laisser tomber le HTML

    Dans la FAQ, il y a ca :
    http://java.developpez.com/faq/java/...xt_multi_style

    Mais je sais pas comment le mettre en place

  6. #6
    Membre éclairé Avatar de soad
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    520
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 520
    Par défaut
    oki alors fais une petite recherche sur les JTextPane et les StyledDocument

Discussions similaires

  1. [AC-2007] Ligne En couleur dans une zone de liste
    Par Grooz13 dans le forum IHM
    Réponses: 4
    Dernier message: 06/07/2010, 20h21
  2. Réponses: 5
    Dernier message: 29/01/2010, 14h22
  3. Certaines lignes en couleur dans un ListView en VB6
    Par kaspar dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 18/01/2006, 15h00
  4. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03

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