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 :

couleur du texte d'un JTextPane


Sujet :

Composants Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut couleur du texte d'un JTextPane
    Bonjour,
    je voudrais changer la couleur de mon texte dans un JTextPane, j'ai essayé d'utiliser la methode setForeground(Color color) mais ça ne marche pas!!!
    Si quelqu'un à une idée merci de faire partager...

    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    contactP = new JPanel();
        contactP.setLayout(new GridBagLayout());
     
        contact_tp = new JTextPane();
        contact_tp.setOpaque(false);
     
        StyledDocument doc = contact_tp.getStyledDocument();
        MutableAttributeSet center = new SimpleAttributeSet();
        StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
        doc.setParagraphAttributes(0, 0, center, true);
        contact_tp.setText(
          "Veuillez nous contacter...");
        contact_tp.setEnabled(false);

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 42
    Par défaut
    lu,
    si mes souvenirs sont bon ça doit être setSelectedTextColor(),

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Merci pour ta réponse mais ça ne marche pas!!!

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    je sais pas si tu sais si on peut changer la couleur au niveau du String avant de faire le contact_tp.setText(...).
    On pourrait alors avoir un truc du genre String s = "...."
    et s.setColor(...) ou autre...

  5. #5
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Le setForeground(Color) c'est pour modifier la couleur de l'ensemble du texte. Pour modifier la couleur d'une partie du texte on utilise alors des Style
    utilisés conjointement avec un StyledDocument.

    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
    import java.awt.Color;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTextPane;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyledDocument;
     
    public class Test extends JFrame {
     
    	public Test() {
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
     
    		JTextPane jTextPane = new JTextPane();
    		jTextPane.setForeground(Color.GREEN.darker());
     
    		Style defaut = jTextPane.getStyle("default");
    		Style style1 = jTextPane.addStyle("style1", defaut);
    		StyleConstants.setFontFamily(style1, "Comic sans MS");
    		StyleConstants.setFontSize(style1, 14);
    		StyleConstants.setForeground(style1, Color.BLUE);
    		Style style2 = jTextPane.addStyle("style2", style1);
    		StyleConstants.setForeground(style2, Color.RED);
    		StyleConstants.setFontSize(style2, 25);
     
    		String s1 = "Bonjour\r\n";
    		String s2 = "Bonjour\r\n";
    		String s3 = "Bonjour\r\n";
    		StyledDocument sDoc = (StyledDocument) jTextPane.getDocument();
    		try {
    			int pos = 0;
    			sDoc.insertString(pos, s1, defaut);
    			pos += s1.length();
    			sDoc.insertString(pos, s2, style1);
    			pos += s2.length();
    			sDoc.insertString(pos, s3, style2);
    		} catch (BadLocationException e) {
    			//
    		}
     
    		setContentPane(new JScrollPane(jTextPane));
    	}
     
    	public static void main(String[] args) {
    		Test frame = new Test();
    		frame.pack();
    		frame.setVisible(true);
    	}
     
    }

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Bonjour désolé de ne repondre que maintenant j'ai essayé de faire un contact_tp.setForeground(Color.RED); mais sans succès mon texte à toujours une couleur bleu. En fait je voudrais que tout mon texte arrive à la même couleur pas seulement une partie je ne comprends pas pourquoi il ne change pas de couleur!!!

  7. #7
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Salut,

    Post ton code.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Voila une partie du code
    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
     
        helpP = new JPanel();
        helpP.setLayout(new GridBagLayout());
     
        help_tp = new JTextPane();
        StyledDocument doc = help_tp.getStyledDocument();
        Style defaut = help_tp.getStyle("default");
     
        MutableAttributeSet center = new SimpleAttributeSet();
        StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
        StyleConstants.setForeground(defaut, Color.red);
        doc.setParagraphAttributes(0, 0, center, true);
     
        help_tp.setText("Le debut\n");
        help_tp.setForeground(Color.RED);
        StyleConstants.setForeground(defaut, Color.red);
     
        String s1 = "Affichage du texte";
        try {
          doc.insertString(9, s1, defaut);
        } catch (BadLocationException e) {
        }
        help_tp.setEnabled(false);
     
        Layout.constrain(helpP, help_tp, 1, 1, 1, 1, java.awt.GridBagConstraints.NONE,
          java.awt.GridBagConstraints.CENTER, 0.0, 0.0, 5, 5, 5, 5);
     
        this.setLayout(new GridBagLayout());
        Layout.constrain(this, helpP, 0, 0, 1, 1, java.awt.GridBagConstraints.HORIZONTAL,
          java.awt.GridBagConstraints.CENTER, 0.0, 0.0, 5, 5, 5, 5);
      }

  9. #9
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Je pense que c'est ton style par défaut que tu doit paramétrer avec la couleur par défaut, car c'est lui qui est utilisé (il me semble) quand il n'y a pas de style particulier associé, et du coup la couleur du composant n'est pas utilisé. A vérifier car je ne suis pas sûr.

  10. #10
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Oui, c'est bien ça !

    En reprenant l'exemple que je t'ai fourni plus haut, le composant JTextPane à sa proriété foreground avec une couleur verte. En ajoutant une couleur au style par défaut, on vois que lorsque aucun style n'est utilisé, le composant prend ce style par défaut. Donc tu choisi, ou bien tu attribut une couleur au style par défaut et la couleur foreground du composant ne sera pas utilisé. Ou bien tu n'attribut pas de couleur au style par défaut et c'est la couleur foreground du composant qui sera utilisé lorsque le texte n'est pas affiché avec un style particulier.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    En fait j'ai bien essayé de faire sans le style par defaut et mon texte ne change pas de couleur

    voila ce que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    helpP = new JPanel();
        helpP.setLayout(new GridBagLayout());
     
        help_tp = new JTextPane();
     
        StyledDocument doc = help_tp.getStyledDocument();
     
        help_tp.setText("Le debut\n");
        help_tp.setForeground(Color.RED);
     
        help_tp.setEnabled(false);

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    C'est bon j'ai trouvé l'erreur vient de mon help_tp.setEnabled(false);
    Avec la couleur ne s'affiche pas sinon elle s'affiche, le problème c'est que j'aurais vraiment aimé que ce texte ne soit pas modifiable parce que si je tape une lettre tout s'efface!!!

  13. #13
    Membre Expert
    Avatar de visiwi
    Profil pro
    Inscrit en
    Février 2008
    Messages
    1 052
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 1 052
    Par défaut
    Pour cela utilise le manipulateur setEditable(boolean).

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 155
    Par défaut
    Désolé de ne repondre que maintenant j'ai pas bossé ce week end, merci pour ton aide c'est bon ça marche très bien!!!

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

Discussions similaires

  1. [Swing] Centré un texte dans un JTextPane
    Par titi_22 dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 24/06/2011, 17h09
  2. Réponses: 4
    Dernier message: 22/01/2007, 22h14
  3. Changer la couleur du texte lors passage souris sur un TD !
    Par Kokito dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 10/01/2005, 16h40
  4. wxWidgets : couleur de texte sur une seule ligne
    Par Oatly dans le forum wxWidgets
    Réponses: 8
    Dernier message: 05/12/2004, 20h24
  5. [border][panel] couleur du texte
    Par harold63 dans le forum Composants
    Réponses: 3
    Dernier message: 29/06/2004, 16h36

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