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 :

Remettre la couleur par défaut dans un JTextPane


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut Remettre la couleur par défaut dans un JTextPane
    Bonjour à tous,

    je suis en train de réaliser un éditeur de bbcode personnalisé et je bute sur la coloration des balises.

    Voici le 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
    int debut = area.getSelectionStart();
    int fin = area.getSelectionEnd();
     
    	Document doc = area.getStyledDocument();
    	Color c = Color.RED;
    	SimpleAttributeSet attr = new SimpleAttributeSet();
    	StyleConstants.setForeground(attr, c);			
     
    	try{
    		   doc.insertString(debut, "[tab]", attr);
    		    StyleConstants.setForeground(attr, Color.black);
    	}
    	catch(javax.swing.text.BadLocationException e1){
    		    e1.printStackTrace();
    	}
     
    	area.requestFocusInWindow();
    	area.setCaretPosition(fin+5);
    Lorsque j'ajoute ma balise, je lui attribue la couleur sans problème. Seulement, quand j'écris du texte derrière, ce texte a la même couleur que la balise, or j'aimerais qu'il redevienne noir.

    J'ai tenté de rajouter la portion de code suivante derrière mais je ne veux pas qu'il y ait d'espace entre la balise et le texte qui suit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try{
    	StyleConstants.setForeground(attr, Color.black);
    		    doc.insertString(fin, " ", attr);
    	}
    	catch(javax.swing.text.BadLocationException e1){
    		    e1.printStackTrace();
    	}
     
    	area.requestFocusInWindow();
    	area.setCaretPosition(fin);
    J'ai aussi essayé en ajoutant des Styles sur la balise mais le problème est le même, il ne repasse pas en noir après le crochet fermant de la balise

    Est-ce que vous auriez une idée ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Par défaut
    Salut !

    J'ai aussi essayé en ajoutant des Styles sur la balise mais le problème est le même, il ne repasse pas en noir après le crochet fermant de la balise
    J'ai noté ça un jour quelque part, à voir si ça peut le faire :

    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
     
    import javax.swing.text.Style;
    import javax.swing.text.StyleConstants;
    import javax.swing.text.StyledDocument;
     
           Style defaut = jTextPane1.getStyle("default");
           Style style1 = jTextPane1.addStyle("style1", defaut);
    	StyleConstants.setFontFamily(style1, "Comic sans MS");
    	StyleConstants.setFontSize(style1, 14);
    	StyleConstants.setForeground(style1, Color.BLUE);
    	Style style2 = jTextPane1.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) jTextPane1.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) {
    		//
    	}
    bonne chance !

  3. #3
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 097
    Par défaut Peut-être une piste
    Bonjour,

    Je ne maîtrise pas bien JTextPane, mais je crois que ce dernier permet d'écrire dans différentes couleurs les mots d'une même ligne en procédant ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jTextPane1.setContentType("text/html");
    jTextPane1.setText("<html>\r\n<font color=red>Ceci</font><font color=black> est un test</font>\n</html>\r\n");
    En fait, en typant le contenu en text/html, on s'autorise l'utilisation du balisage HTML. C'est apparament beacoup plus simple pour contrôler la présentation du texte.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 3
    Par défaut
    j'avais essayé cette portion de code fraco, mais ça n'avait rien changé. Peut-être m'y étais-je mal pris. J'essayerai demain en espérant avoir les idées plus clair

    Je sais pas si le html convient bien à mes besoins car c'est l'utilisateur qui entre le texte et non le programme. Par conséquent l'ajout des balises posera peut-être problème (je veux qu'elle soit positionnée à des endroits bien précis, je sais pas si c'est faisable avec le html).
    Je ferai des tests demain pour voir si ce que je dis est exact ou si ta solution est belle et bien valide.

    En tout cas, merci pour vos réponses

Discussions similaires

  1. [D7]Remettre valeur par défaut dans un TEdit
    Par LaQude dans le forum Langage
    Réponses: 3
    Dernier message: 24/04/2013, 12h58
  2. [C#] Paramètre par défaut dans une fonction
    Par RobinJulie dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/01/2012, 15h07
  3. Réponses: 1
    Dernier message: 25/05/2007, 18h29
  4. Sélection valeur par défaut dans une zone de liste
    Par Cécile154 dans le forum IHM
    Réponses: 2
    Dernier message: 15/02/2005, 19h20
  5. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 12h52

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